尝试执行过程时,我收到PLS-00049错误
使用集合类型变量时,我对cast和bind变量有疑问。
CREATE OR REPLACE type GCIF_ARRAY AS TABLE OF VARCHAR2(40);
CREATE OR REPLACE
PROCEDURE test_procedure (
V_IS_ARX_ENABLED IN VARCHAR2,
V_GCIF IN GCIF_ARRAY)
IS
--V_GCIF OD_CUSTOMER_MASTER_TBL.OD_GCIF%type;
err_txt VARCHAR2(100);
BEGIN
INSERT
INTO test_table
(
OD_GCIF,
OD_PROFILE_ID,
OD_PROFILE_NAME
)
SELECT OD_GCIF,
DEF_PROFILE_ID,
PROFILE_NAME
FROM test_map_table,
test_temp_table
WHERE DEF_PROFILE_ID = PROFILE_ID
AND OD_GCIF IN
(SELECT COLUMN_VALUE FROM TABLE(CAST( :V_GCIF AS GCIF_ARRAY) )
);
exception
when others then
err_txt :='Error occured';
END;
-
当我在编译期间运行程序时出现以下错误
PLS-00049: bad bind variable 'V_GCIF'
请你解释发生了什么以及为什么会发生错误..
答案 0 :(得分:1)
V_GCIF
是传递给此过程的参数。因此,您不需要在程序正文中添加:
。
SELECT COLUMN_VALUE FROM TABLE(CAST( :V_GCIF AS GCIF_ARRAY)
-- You don't need to specify :V_GCIF. Just use V_GCIF instead.
当我们通过编程语言中的一些代码执行sql语句时,我们使用:
绑定变量,例如,C#。
答案 1 :(得分:0)
删除V_GCIF变量前面的冒号。
对PL / SQL变量的每次引用实际上都是BIND VARIABLE。