Executar PL/SQL no Oracle via ODBC
Pessoal,
Estou precisando executar um procedimento escrito em Oracle utilizando a linguagem PL/SQL.
Uso uma conexão ADO, através de driver ODBC da instalado junto com o client do Oracle. Consigo executar normalmente as procedures já existentes no banco, mas queria executar enviando a programação em PL/SQL como envio um select qualquer. Eu libero um memo pro usuário digitar o PL/SQL e quando ele clicar em executar, fazer a consulta no banco e retornar os valores.
Procurei alguma coisa na net sobre esse assunto, mas não acho nada relacionado com Delphi.
Obrigado.
Estou precisando executar um procedimento escrito em Oracle utilizando a linguagem PL/SQL.
Uso uma conexão ADO, através de driver ODBC da instalado junto com o client do Oracle. Consigo executar normalmente as procedures já existentes no banco, mas queria executar enviando a programação em PL/SQL como envio um select qualquer. Eu libero um memo pro usuário digitar o PL/SQL e quando ele clicar em executar, fazer a consulta no banco e retornar os valores.
Procurei alguma coisa na net sobre esse assunto, mas não acho nada relacionado com Delphi.
Obrigado.
Prgdelphi
Curtidas 0
Respostas
Marcio.theis
24/11/2005
Você pode deixar uma qry que recebe o SQL do memo e executá-lo normalmente:
E deixe esta qry apontando para seu Grid, assim quando abrir ira mostrar os campos do SQL que o usuário solicitou...
Query1.Close; Query1.SQL.CLear; Query1.SQL.Add(Memo1.Text); Query1.Open;
E deixe esta qry apontando para seu Grid, assim quando abrir ira mostrar os campos do SQL que o usuário solicitou...
GOSTEI 0
Prgdelphi
24/11/2005
Foi assim mesmo que eu tentei fazer, mas continua me retornando erro.
Fiz o seguinte:
Acrecentei um TADOConection e um adoquery no formulário. No ADOQuery coloquei check parameters = false para não dar erro informando que o parâmetro é inválido.
Em seguida, tentei executar o seguinte comando PL/SQL. Apenas como teste.
Mas quando tento executar, recebo o seguinte erro:
ORA-01840: input value not long enough for date format
ORA-06512: at line 1.
Acredito que naum tenha nenhum erro no comando pois no sql plus ele roda normalmente.
Agradeço qualquer ajuda que vocês puderem me dar.
Obrigado.
Fiz o seguinte:
Acrecentei um TADOConection e um adoquery no formulário. No ADOQuery coloquei check parameters = false para não dar erro informando que o parâmetro é inválido.
Em seguida, tentei executar o seguinte comando PL/SQL. Apenas como teste.
DECLARE NUMIN NUMBER; NUMOU NUMBER; COMPDT VARCHAR(08); DT_CK DATE; BEGIN dbms_output.enable(10000); SELECT ´01´ INTO NUMIN FROM DUAL; SELECT SUBSTR(SYSDATE,1,2) INTO NUMOU FROM DUAL; SELECT SUBSTR(SYSDATE,3,6) INTO COMPDT FROM DUAL; WHILE NUMIN <= NUMOU LOOP DT_CK := NUMIN||COMPDT; dbms_output.put_line(NUMIN); dbms_output.put_line(NUMOU); NUMIN := NUMIN + 1; END LOOP; END;
Mas quando tento executar, recebo o seguinte erro:
ORA-01840: input value not long enough for date format
ORA-06512: at line 1.
Acredito que naum tenha nenhum erro no comando pois no sql plus ele roda normalmente.
Agradeço qualquer ajuda que vocês puderem me dar.
Obrigado.
GOSTEI 0