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.