该表达式类型的声明不完整或格式错误

时间:2019-12-17 12:03:13

标签: oracle plsql

我正在研究以下存储过程。

我的程序

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;

在此存储过程中,我将获取表列名称,并根据列插入值。 我在立即执行行上收到错误。因为此表达式类型的声明不完整或格式不正确。

0 个答案:

没有答案