24/11/2005

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.


Prgdelphi

Respostas

25/11/2005

Marcio.theis

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

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


Responder Citar

25/11/2005

Prgdelphi

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.

 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.


Responder Citar