用于PL / SQL脚本的SQL查询

问题描述 投票:0回答:2

我正在SQL Developer上编写PL / SQL过程,我正在运行以下查询:

EXECUTE IMMEDIATE 'select count(*) from '||var_Table||' into var_NumRec where COMPANY = '||var_company||' order by COMPANY';
OR
EXECUTE IMMEDIATE 'select count(*) from '||var_Table||' into '||var_NumRec||' where COMPANY = '||var_company||' order by COMPANY';

我收到错误“SQL命令未正确结束”

以下查询工作正常,但我必须在此查询中添加“where”子句:

select count(*) from '||var_Table into var_NumRec;
plsqldeveloper
2个回答
1
投票

我检查了程序并运行下面的代码,这是正常的。

DECLARE 
    var_NumRec NUMBER(15); 
    var_Table VARCHAR2(40); 
    var_company VARCHAR2(25) := 'ABC'; 
    TYPE 
        my_nested_table 
        IS TABLE OF VARCHAR2(40); 
    var_Direct my_nested_table := my_nested_table ('Employee', 'Accounts', 'FEE'); 
BEGIN 
    FOR i IN 1.. var_direct.count 
    LOOP 
        EXECUTE IMMEDIATE 'select count(*) from '||var_Direct(1) ||' where 1=1' into var_NumRec ;  
        DBMS_OUTPUT.PUT_LINE('ABC : '||var_NumRec); 
    END LOOP;
END;

您使用的标识符“公司”在此处无效,因此早期代码未运行。


0
投票

使用以下查询代替pl SQL过程中的执行立即:

EXECUTE IMMEDIATE 'select count(*) from '||var_Table||'  where COMPANY = '||var_company order by COMPANY  
into var_NumRec;

当我们使用Execute immediate时,我们应该把INTO放在声明之外。希望这对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.