甲骨文:缺少表达

Oracle: Missing Expression

我有这组代码,编译的时候没有return错误

create or replace PROCEDURE PARAM_CHECK
(
  PARAM_CODE IN VARCHAR2, 
  TABLE_NAME IN VARCHAR2,
  ISEXIST OUT INTEGER
) 
IS 
SQLSTMT VARCHAR2(200);
V_COUNT NUMBER;
BEGIN  
SQLSTMT := 'SELECT COUNT(*) INTO '|| V_COUNT ||' FROM '|| TABLE_NAME ||' WHERE ID = '''||PARAM_CODE||''' AND ROWNUM = 1';  
EXECUTE IMMEDIATE SQLSTMT;
COMMIT;
IF 
V_COUNT = 0 THEN
ISEXIST := 0;
ELSE
ISEXIST := 1;
END IF;

END PARAM_CHECK;

但是当我尝试 运行 程序后,它 return 这个错误:

Connecting to the database SAA.
ORA-00936: missing expression
ORA-06512: at "SAA.PARAM_CHECK", line 12
ORA-06512: at line 9
Process exited.
Disconnecting from the database SAA.

我不知道为什么会return这个错误,再加上我编译的时候一切正常。我确实搜索了特定的 ORA 错误,但没有太大帮助。请帮我。提前致谢。

Vcount 在将其值包含到 sql 语句中时未初始化,因此它在该位置产生语法错误的空白。

如果完全可行,你必须写

SQLSTMT := 'SELECT COUNT(*) INTO V_COUNT FROM '|| TABLE_NAME ||' WHERE ID = '''||PARAM_CODE||''' AND ROWNUM = 1';  

但这对 iirc 也不起作用,因为立即执行会打开一个新范围。

你不得不求助于

SQLSTMT := 'SELECT COUNT(*) FROM '|| TABLE_NAME ||' WHERE ID = '''||PARAM_CODE||''' AND ROWNUM = 1';
EXecute immediate sqlstmt into v_count;