Cómo llamar a un procedimiento almacenado desde sqlplus?

Tengo un procedimiento:

Create or replace procedure testproc(parameter1 in varachar2,parameter2 out varchar2)
begin

Do something

end;

He intentado exec testproc(12,89) ::Devuelve el error

  • En general, es mejor si usted dice exactamente lo que el error que estás recibiendo, en vez de decir que «devuelve el error»
InformationsquelleAutor Rupesh | 2011-12-19

2 Comentarios

  1. 10

    El segundo parámetro de su procedimiento es un OUT parámetro — su valor será asignado a la variable que se pasa cuando finaliza el procedimiento. No se puede utilizar un literal de cadena de valor para este parámetro.

    Puede declarar una enlazar variables en el SQLPlus símbolo del sistema y el uso que:

    -- Declare bind variable
    VARIABLE x NUMBER
    
    -- If necessary, initialize the value of x; in your example this should be unnecessary
    -- since the value of the second parameter is never read
    EXEC :x := 1
    
    -- Call the procedure
    EXEC testproc(12, :x)
    
    -- Print the value assigned to the bind variable
    PRINT x

    Alternativamente, puede utilizar un anónimo PL/SQL bloque:

    -- Activate client processing of dbms_output buffer
    SET SERVEROUTPUT ON
    
    -- In anonymous block, declare variable, call procedure, print resulting value
    DECLARE
      x NUMBER;
    BEGIN
      testproc(12, x);
      dbms_output.put_line( x );
    END;
    /
  2. 3
       create or replace procedure autogenerate(t1 in int,t2 in int)
       is
       jum number;
       begin 
                if t1 < 10 then 
                dbms_output.put_line('Value too low.');
                    else if t1 > 20 then 
                    dbms_output.put_line('Value too high.');
                    end if;
                end if;
       end;
       /
       show errors;
       set serveroutput on;
       execute autogenerate(1,2);

    Probar esto, si tienen alguna duda solo post nuevo para mí 🙂

    • CREAR O REEMPLAZAR el PROCEDIMIENTO TESTSQLRULEPROC(param1 en varchar2, param2 out varchar2) COMO EMPEZAR SI TO_Number(param1) < 10, a CONTINUACIÓN, param2:=’Valor demasiado bajo.’; ELSIF TO_Number(Param1) > 20, a CONTINUACIÓN, param2 := ‘Valor demasiado alto.’; Otra COSA param2:= ‘NULL’; END IF; la EXCEPCIÓN CUANDO los DEMÁS, param2:= ‘No es un Número!’; FINAL TESTSQLRULEPROC;
    • editado, compruebe que

Dejar respuesta

Please enter your comment!
Please enter your name here