2015-06-09 3 views
0

Я использую SQLDEVELOPER Чтобы выполнить хранимую процедуру. это моя процедураВыполнение хранимой процедуры с выходным параметром

create or replace PROCEDURE SPP 
(
inpt IN VARCHAR2, 
opt OUT VARCHAR2 
) 
AS 
BEGIN 
    SELECT U_ID 
    INTO opt 
    FROM TABLE_NAME 
    WHERE U_ID=inpt; 
END; 

поэтому он должен вернуть значение в opt, которое я могу распечатать или что угодно. я не знаю, как выполнить это я попытался запустить этот скрипт

var opt VARCHAR2; 

exec SPP('test_user') := opt 

, но он не работает, это мой первый раз делает сохраненные проки, и я действительно смущен любая помощь ценится

как я делаю он работает? я могу сделать сохраненный proc run с входными переменными, но с выходной переменной j mess up, и я не могу сделать это, не используя формат SELECT (item) INTO.

ответ

0

Для вызова процедуры вам необходимо передать переменную, которую может заполнить процедура. Что-то вроде

DECLARE 
    l_output table_name.u_id%type; 
BEGIN 
    spp('test_user', l_output); 
END; 

Теперь, как говорится, объявляя хранимой процедуры, единственной целью которых является запрос к базе данных и возвращает значение, как правило, неправильный архитектурный выбор. Вот почему существуют функции.

CREATE OR REPLACE FUNCTION some_function(p_input IN table_name.u_id%type) 
    RETURN table_name.u_id%type 
IS 
    l_uid table_name.u_id%type; 
BEGIN 
    SELECT u_id 
    INTO l_uid 
    FROM table_name 
    WHERE u_id = p_input; 

    RETURN l_uid; 
END; 

который можно затем вызвать либо в блоке PL/SQL

DECLARE 
    l_output table_name.u_id%type; 
BEGIN 
    l_output := some_function('test_user'); 
END; 

или в SQL заявление

SELECT some_function('test_user') 
    FROM dual; 
+0

получил его на работу, спасибо большое! – PYA

+0

И спасибо за отзыв, я просто был брошен в базу данных без особого воздействия, поэтому я ценю комментарии. Большое спасибо! – PYA

+0

Также, как я могу напечатать переменную l_output? просто для проверки того, что я сделал, было правильно? благодаря тонну! – PYA

Смежные вопросы