我正在研究以下存储过程。
我的程序
create or replace PROCEDURE My_Procedure(
v_ID IN NUMBER DEFAULT 0 ,
v_DETAIL_ID IN NUMBER DEFAULT 0 ,
v_HEADER_ID IN NUMBER DEFAULT 0 ,
v_JOB_DETAIL_ID IN NUMBER DEFAULT 0 ,
v_TABLE_NAME IN VARCHAR2,
v_ESCALATION_TYPE IN VARCHAR2 DEFAULT NULL ,
v_COLUMN_LIST IN NVARCHAR2 DEFAULT NULL ,
cv_1 OUT SYS_REFCURSOR,
cv_2 OUT SYS_REFCURSOR ) AS BEGIN NUll; END;
我要在其中执行的存储过程
DECLARE
v_ident VARCHAR(30000) := NULL;
v_columns
varchar(30000) := NULL;
v_job_header_id number := 0;
BEGIN
SELECT
(
SELECT
rtrim(XMLAGG(xmlelement(e, c.column_name, ',').extract('//text()')
ORDER BY
c.column_id
).getclobval(), ',')
FROM
table1 c
WHERE
c.owner = t.owner
AND c.table_name = t.table_name
)
INTO v_columns
FROM
all_tables t
WHERE
t.table_name = 'TABLE_NAME';
v_ident := 'INSERT INTO TABLE_NAME ('
|| v_columns
|| ') EXEC My_Procedure(0,0,0,''tableName'',null,v_COLUMNS)';
dbms_output.put_line(v_ident);
EXECUTE IMMEDIATE ( v_ident, 'v_JOB_HEADER_ID INT OUT,v_COLUMNS VARCHAR(30000) OUT', v_job_header_id, v_columns );
END;
在此存储过程中,我将获取表列名称,并根据列插入值。 我在立即执行行上收到错误。因为此表达式类型的声明不完整或格式不正确。