我正在尝试运行这个动态SQL查询,但不断遇到问题。它用于显示Oracle Apex示例数据库“emp”中角色为“经理”的员工的人数。
Declare
Manage_num Number(10);
Manage_count VarChar(150);
Begin
Manage_count := 'Select COUNT(JOB) from emp where JOB='MANAGER'';
Execute Immediate Manage_count into Manage_num;
DBMS_OUTPUT.PUT_LINE ('Total number of Managers is'||Manage_num);
END
字符串
这是我不断收到的错误消息:
第4/0行出错:ORA-06550:第3行,第1列:PLS-00103:当预期以下之一时,遇到符号“MANAGE_COUNT”:
:= ;非空默认字符符号“;“替换为“MANAGE_COUNT”以继续。ORA-06512:在“SYS.WWV_DBMS_SQL_APEX_230100”,第797行ORA-06550:第5行,第1列:PLS-00103:预期出现以下情况之一时,遇到符号“开始”:
:= ;非空默认字符符号“;”取代“开始”继续。ORA-06550:第6行,第56列:PLS-00103:预期出现以下情况之一时,遇到符号“MANAGER”:
- & = - + ; < / > at in is mod remainder not rem <an exponent(**)> <> or!= or ~= >= <= <> and or like like like 2 like 4 like c between||在“MANAGER”之前插入符号“* 以继续。ORA-06512:在“SYS.DBMS_SYS_SQL”,第1658行ORA-06512:在“SYS.WWV_DBMS_SQL_APEX_230100”,第782行ORA-06512:在“APEX_230100.WWV_FLOW_DYNAMIC_EXEC”,第2035行
- Manage_num编号(10)
- Manage_count VarChar(150)
1.开始 - Manage_count:= '从emp中选择COUNT(JOB),其中JOB =' MANAGER '';
1.立即执行Manage_count到Manage_num;
我试过根据YouTube教程更改分号和更改语法,但没有成功
对不起,如果这是一个简单的解决方案或我的问题是模糊的,我是新的论坛。
1条答案
按热度按时间ffx8fchx1#
如前所述,您发布的代码不正确。
基本上,不需要动态SQL,因为代码中没有动态内容。如果你用
字符串
你就会得到答案
但是,如果您出于某种原因必须使用动态SQL,那么请注意单引号的使用。如果你选择在需要的时候将它们加倍,代码可能会变得难以阅读和维护,所以q引用机制有助于使它更漂亮。另外,Oracle建议我们使用
varchar2
(而不是varchar
)数据类型;但这不是错误型
这是Apex SQL Workshop中的样子:
x1c 0d1x的数据