带绑定变量的动态sql

带绑定变量的动态sql,sql,oracle,stored-procedures,dynamic,sys-refcursor,Sql,Oracle,Stored Procedures,Dynamic,Sys Refcursor,/ 我试图使用包含动态生成的SQL查询的过程返回empno和employee name。该查询是使用bind变量生成的。但出现以下错误。可能是我调用该过程的方式有问题 ORA-06512:第1 00903行。00000-“无效的表名”您不能使用绑定变量来代替标识符,例如表名或列名。这些事情必须在解析语句时就知道,这发生在绑定变量绑定到值之前。(使用绑定变量的部分目的是能够解析语句一次,然后使用变量值执行它。) 在本例中,解决方案很简单,因为您已经将查询字符串放入变量中 VARIABLE REFC

/

我试图使用包含动态生成的SQL查询的过程返回empno和employee name。该查询是使用bind变量生成的。但出现以下错误。可能是我调用该过程的方式有问题
ORA-06512:第1 00903行。00000-“无效的表名”

您不能使用绑定变量来代替标识符,例如表名或列名。这些事情必须在解析语句时就知道,这发生在绑定变量绑定到值之前。(使用绑定变量的部分目的是能够解析语句一次,然后使用变量值执行它。)

在本例中,解决方案很简单,因为您已经将查询字符串放入变量中

VARIABLE REFC REFCURSOR;
EXEC SEARCH_PROC('TEST','EMP','ENAME',:REFC);
PRINT REFC;

/
VARIABLE REFC REFCURSOR;
EXEC SEARCH_PROC('TEST','EMP','ENAME',:REFC);
PRINT REFC;

/
BEGIN
SQL_QRY:='SELECT EMPNO,' || p_col || ' FROM ' || p_table;
--DBMS_OUTPUT.PUT_LINE('SQL:'||SQL_QRY);
OPEN SEARCH_RESULT FOR SQL_QRY;