如何在立即执行语句中包含变量?

How to include a variable in a execute immediate statement?

我正在尝试 select 立即执行语句中的变量,但是,我不确定语法。

我正在尝试 运行 的代码是这样的:

DECLARE
PREV_PAR VARCHAR2(1);
VC_NUM VARCHAR2(2);
BEGIN
SELECT 'P' INTO PREV_PAR FROM DUAL;
SELECT '01' INTO VC_NUM FROM DUAL;
EXECUTE IMMEDIATE 'CREATE TABLE TEMP_TABLE AS (SELECT '||PREV_PAR||' as prev_par,'||VC_NUM||'  as vc_code from dual)';
END;

我做错了什么?

您需要再添加两个引号来包围您的每个 varchar 变量,如下所示。

DECLARE
PREV_PAR VARCHAR2(1);
VC_NUM VARCHAR2(2);
BEGIN
SELECT 'P' INTO PREV_PAR FROM DUAL;
SELECT '01' INTO VC_NUM FROM DUAL;
EXECUTE IMMEDIATE 'CREATE TABLE TEMP_TABLE AS (SELECT '''||PREV_PAR||''' as prev_par,'''||VC_NUM||'''  as vc_code from dual)';
END;
/

因为运行时最后的语句一定是这样的:

CREATE TABLE TEMP_TABLE AS (SELECT 'P' as prev_par, '01'  as vc_code from dual)