Array
(
)

Executar PL/SQL no Oracle via ODBC

Prgdelphi
   - 24 nov 2005

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.


Marcio.theis
   - 25 nov 2005

Você pode deixar uma qry que recebe o SQL do memo e executá-lo normalmente:

#Código

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...


Prgdelphi
   - 25 nov 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.

#Código

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.