#plsql #oracle12c
#plsql #oracle12c
Вопрос:
Я пытаюсь выбрать переменную в инструкции execute immediate, однако я не уверен в синтаксисе.
Код, который я пытаюсь запустить, выглядит примерно так:
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;
Что я делаю неправильно?
Ответ №1:
Вам нужно добавить еще два знака кавычек, чтобы окружить каждую из ваших переменных 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)
Комментарии:
1. Спасибо за вашу помощь.