Pular para o conteúdo

Fóruns SQL e PL/SQL Procedure Procedure

#75642
Anônimo

    Ricardo,

    abaixo segue um exemplo de uma procedure e de um script.

    Procedure

    CREATE OR REPLACE PROCEDURE Teste(AUX IN number) AS
    cur integer;
    rc integer;
    STAT VARCHAR2(70);
    CAMPO1 VARCHAR2(30);
    NUM_CARTAO NUMBER;
    BEGIN
    STAT := ‘select CAMPO1, NUM_CARTAO from cartao where num_cartao =’ || AUX;
    cur := DBMS_SQL.OPEN_CURSOR;
    DBMS_SQL.PARSE(cur, STAT , DBMS_SQL.NATIVE);
    DBMS_SQL.DEFINE_COLUMN (cur, 1, CAMPO1, 30);
    DBMS_SQL.DEFINE_COLUMN (cur, 2, NUM_CARTAO);
    rc := DBMS_SQL.EXECUTE(cur);
    LOOP
    IF DBMS_SQL.FETCH_ROWS (cur) > 0 THEN
    DBMS_SQL.COLUMN_VALUE (cur, 1, CAMPO1);
    DBMS_SQL.DEFINE_COLUMN (cur, 2, NUM_CARTAO);
    DBMS_OUTPUT.PUT_LINE(CAMPO1 ||’ ‘ || TO_CHAR(NUM_CARTAO));
    ELSE
    EXIT;
    END IF;
    END LOOP;
    DBMS_SQL.CLOSE_CURSOR(cur);
    END;

    Depois é só executar com o valor desejado.
    – exec Teste(123);

    mas acho mais prático um script:

    Crie um arquivo sql com a query

    Script

    select CAMPO1, NUM_CARTAO from cartao where num_cartao = &aux;

    depois execute o script:

    @d:teste.sql

    Enter value for aux: 123
    old 1: select CAMPO1, NUM_CARTAO from cartao where num_cartao = &aux;
    new 1: select CAMPO1, NUM_CARTAO from cartao where num_cartao = 123;

    Pronto.

    Espero ter ajudado.