我跑步时
SELECT COUNT(*)
INTO l_entry_found
FROM hera.hera_user@iam
WHERE username = docm.eb_key;
无需立即执行就可以运行。
execute immediate'
SELECT COUNT(*) INTO l_entry_found FROM hera.hera_user@iam WHERE
username = docm.eb_key;';
但是会抛出ora-00933
。
可能是什么问题,我该如何解决?预先感谢!
答案 0 :(得分:2)
您不能在动态SQL中使用select into
而且您也不需要分号
declare
l_entry number(10);
begin
execute immediate'
SELECT COUNT(*) FROM hera.hera_user@iam WHERE
username = '''||docm.eb_key||'''' INTO l_entry;
end;
答案 1 :(得分:1)
您遇到了一些问题;说你有一张像
create table someTable(userName varchar2(100))
和类似的代码:
declare
someVariable varchar2(100);
l_entry_found number;
begin
someVariable := 'someName';
--
SELECT COUNT(*)
INTO l_entry_found
FROM someTable
WHERE username = someVariable;
end;
如果要切换到动态SQL,则需要
INTO
移动到动态部分之外您的代码可能是:
declare
someVariable varchar2(100);
l_entry_found number;
begin
someVariable := 'someName';
--
execute immediate
'SELECT COUNT(*)
FROM someTable
WHERE username = :bindVar'
into l_entry_found
using someVariable;
end;
在这里,我认为您有充分的理由切换到动态SQL,例如,您的表名可能会根据某些参数而更改;如果不是这样,纯SQL就足以完成您的任务。
答案 2 :(得分:0)