Ao executar uma procedure com cursor dinâmico apresenta a mensagem "comando SQL não encerrado adequadamente".
Segue o cursor:
vSQL := 'Select nome, valor from vendas where datavenda > ' || VarData;
vSQL := 'Select nome, valor from vendas where datavenda > ' || VarData;
vSQL := Select nome, valor from vendas where
TO_CHAR(datavenda ,''MM/DD/YYYY'') > ' || to_char(VarData , 'DD/MM/YYYY') || ';' ;
Select nome, valor from vendas where
TO_CHAR(datavenda ,'MM/DD/YYYY') > 15/10/2011;
vSQL := Select nome, valor from vendas where
cast(datavenda as date) > ' || ''''|| DATA1 || '''; ';
Select nome, valor from vendas where
cast(datavenda as date) > '01/01/07';
to_date('01/01/07','mascara');
'11/jan/2011' < '20/jan/1980'
CREATE OR REPLACE
PROCEDURE pcr_teste(
tabela IN VARCHAR2,
unidade IN VARCHAR2,
valor IN VARCHAR2
)
IS
TYPE cursor1 IS REF CURSOR;
c_cursor cursor1;
whereclause VARCHAR2(100);
condicao VARCHAR2(200);
vsql VARCHAR2(500);
saidasql varchar2(4000);
BEGIN
IF unidade IS NOT NULL THEN
condicao := tabela||'.unidade=' || unidade;
END IF;
whereclause := ' WHERE ' || condicao;
open c_cursor for 'select unidade, cvcoringa from '||tabela||whereclause;
loop
fetch c_cursor INTO saidasql;
exit WHEN c_cursor%notfound;
END loop;
EXECUTE IMMEDIATE 'UPDATE '||tabela||' SET cvcoringa ='||valor||whereclause;
close c_cursor;
END pcr_teste
;
exec pcr_bruno('cvdesen', 'são paulo', 'teste')
ORA-00933: comando SQL não encerrado adequadamente
ORA-06512: em "DESENV.PCR_TESTE", line 21
ORA-06512: em line 1
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
open c_cursor for 'select unidade, cvcoringa from '||tabela||whereclause;
loop
fetch c_cursor INTO saidasql;
fetch c_cursor INTO saidasql,vsql;
exec pcr_bruno('cvdesen', 'são paulo', 'teste')
ORA-00933: comando SQL não encerrado adequadamente
ORA-06512: em "DESENV.PCR_BRUNO", line 21
ORA-06512: em line 1
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
create or replace
procedure vale_teste1(
tabela IN VARCHAR2,
unidade IN VARCHAR2,
valor in VARCHAR2
)
IS
whereclause VARCHAR2(200);
condicao VARCHAR2(200);
BEGIN
whereclause := Null;
IF unidade IS NOT NULL THEN
whereclause := 'cvareaunidade'||' = ' || '''' || unidade || '''';
END IF;
IF whereclause is not null then
whereclause := 'WHERE ' || whereclause;
end if;
EXECUTE IMMEDIATE 'UPDATE '||tabela||' SET cvcoringa = '|| '''' || valor || '''' ||' '||whereclause;
END vale_teste1
;
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes