2017-01-24 5 views
-5
CREATE OR REPLACE PROCEDURE GET_SINGLE_CUSTOMERINFO(
                P_ID    IN  NUMBER, 
                P_AGE     OUT NUMBER, 
                P_OCCUPATION   OUT VARCHAR2, 
                P_LASTSTATEMENT  OUT VARCHAR2 
                ) AS 
BEGIN 
    SELECT AGE, 
      OCCUPATION, 
      LASTSTATEMENT 
     INTO P_AGE, 
      P_OCCUPATION, 
      P_LASTSTATEMENT 
     FROM crossallcustomers 
    WHERE crossallcustomers.id = P_ID; 
END; 

EDIT:Как вызвать процедуру

SET SERVEROUTPUT ON; 
SQL> VARIABLE P_ID NUMBER; 
SQL> EXEC GET_SINGLE_CUSTOMERINFO(123,:P_ID); 

ОШИБКА в строке 1: ORA-06550: строка 1, столбец 7: PLS-00306: неправильный номер или типы аргументов в вызове 'GET_SINGLE_CUSTOMERINFO' ORA-06550: строка 1, столбец 7: PL/SQL: Statement игнорировали *

+2

Что проблема? Что вы пробовали? – Aleksej

+0

* PLS-00306: неправильное количество или типы аргументов при вызове * при вызове процедуры –

+0

Трудно сказать, что не так с вашим кодом, не видя его. Отправьте свой код. – Aleksej

ответ

3

Вы вызываете процедуру, которая имеет четыре PARAMET без значения по умолчанию, передавая только два параметра.

Это пример того, как позвонить ваша процедура:

declare 
    V_AGE    NUMBER;  
    V_OCCUPATION  VARCHAR2(10); 
    V_LASTSTATEMENT VARCHAR2(10); 
begin 
    GET_SINGLE_CUSTOMERINFO (
           P_ID    => 1    , 
           P_AGE    => V_AGE   , 
           P_OCCUPATION  => V_OCCUPATION , 
           P_LASTSTATEMENT => V_LASTSTATEMENT 
          ); 
end; 

или с переменными:

SQL> variable V_AGE   number; 
SQL> variable V_OCCUPATION varchar2(10); 
SQL> variable V_LASTSTATEMENT varchar2(10); 
SQL> exec GET_SINGLE_CUSTOMERINFO (P_ID => 1, P_AGE => :V_AGE, P_OCCUPATION => :V_OCCUPATION , P_LASTSTATEMENT => :V_LASTSTATEMENT); 

PL/SQL procedure successfully completed. 
+0

Большое спасибо Aleksej sir ........... моя процедура выполнена –

+0

Если ответ подходит именно вам, пожалуйста, примите его. Это способ как закрыть вопрос как закрытый, так и поблагодарить. [Здесь] (http://stackoverflow.com/help/someone-answers) вы найдете что-то еще – Aleksej

+0

да сэр .i найдет –