如何在立即执行语句中包含变量?
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)
我正在尝试 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)