Я написал простой блок pl sql, и он был успешно выполнен при компиляции.
declare
begin
EXECUTE IMMEDIATE 'SELECT COLUMN_ID,
COLUMN_NAME || '' '' || DATA_TYPE || DECODE(DATA_TYPE,''ROWID'','''',''DATE'','''',NULLIF(''('' || DECODE(DATA_TYPE,''NUMBER'',DATA_PRECISION||'',''||DATA_SCALE,DATA_LENGTH) || '')'',''(,)'')) AS COLS
FROM ALL_TAB_COLS a WHERE OWNER=USER AND TABLE_NAME=''AQ_EVENT_TABLE''';
end;
/
Но, когда я пытаюсь добавить неявный курсор, я получаю эту ошибку:
[Error] Execution (1: 2): ORA-00932: inconsistent datatypes: expected - got -
ORA-06512: at line 4
Мой код:
declare
vSQLSlctString varchar2(255);
begin
EXECUTE IMMEDIATE 'SELECT COLUMN_ID,
COLUMN_NAME || '' '' || DATA_TYPE || DECODE(DATA_TYPE,''ROWID'','''',''DATE'','''',NULLIF(''('' || DECODE(DATA_TYPE,''NUMBER'',DATA_PRECISION||'',''||DATA_SCALE,DATA_LENGTH) || '')'',''(,)'')) AS COLS
FROM ALL_TAB_COLS a WHERE OWNER=USER AND TABLE_NAME=''AQ_EVENT_TABLE''' INTO vSQLSlctString;
end;
/