Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Oracle - хранимая процедура с возвращаемыми параметрами

263
17 января 2009 года
koltaviy
816 / / 16.12.2004
Нужно создать *.sql файл, в котором будет описан вызов хр. процедуры с возвращаемыми параметрами. При выполнении постоянно получаю какие-нибудь ошибки.( Как вызвать правильно?
 
Код:
var v_n number;
var v_code number;

exec p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
print;
63
17 января 2009 года
Zorkus
2.6K / / 04.11.2006
Возможно, нужны begin ..end вокруг самого вызова.
А кстати, что это за код, на каком языке, и что за ошибки он выдает?
263
17 января 2009 года
koltaviy
816 / / 16.12.2004
1
 
Код:
var v_n number;
var v_code number;

exec p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
print;
Цитата:
Соединено.
------ Running 'C:\Documents and Settings\user\Рабочий стол\sms.sql' @ISBC.ussddb ------
BEGIN p_ban.p_inc('hallo','at least',0,'en',v_n,v_code); END;

*
ошибка в строке 1:
ORA-06550: line 1, column 45:
PLS-00201: identifier 'V_N' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored



Фиксация обновлений завершена.


V_N
----------



V_CODE
----------





---------------------- Done ----------------------

2

 
Код:
var v_n number;
var v_code number;
begin
exec p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
print;
Цитата:
Соединено.
------ Running 'C:\Documents and Settings\user\Рабочий стол\sms.sql' @ISBC.ussddb ------
exec p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
*
ошибка в строке 2:
ORA-06550: line 2, column 6:
PLS-00103: Encountered the symbol "P_BAN" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "P_BAN" to continue.
ORA-06550: line 5, column 1:
PLS-00103: Encountered the symbol "PRINT"





---------------------- Done ----------------------

3

 
Код:
var v_n number;
var v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
Цитата:
Соединено.
------ Running 'C:\Documents and Settings\user\Рабочий стол\sms.sql' @ISBC.ussddb ------
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
*
ошибка в строке 2:
ORA-06550: line 2, column 39:
PLS-00201: identifier 'V_N' must be declared
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored





---------------------- Done ----------------------

4

 
Код:
begin
var v_n number;
var v_code number;

p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
Цитата:
Соединено.
------ Running 'C:\Documents and Settings\user\Рабочий стол\sms.sql' @ISBC.ussddb ------
var v_n number;
*
ошибка в строке 2:
ORA-06550: line 2, column 5:
PLS-00103: Encountered the symbol "V_N" when expecting one of the following:
:= . ( @ % ;
ORA-06550: line 3, column 12:
PLS-00103: Encountered the symbol "NUMBER" when expecting one of the following:
:= . ( @ % ; not null range default character





---------------------- Done ----------------------

и т.д..

Называется это всё дело, я так понимаю, SQL-скриптом.

5
17 января 2009 года
hardcase
4.5K / / 09.08.2005
Оракул не видел с 3го курса, но вроде всегда было
 
Код:
[COLOR=Red]DECLARE[/COLOR] v_n number;
[COLOR=Red]DECLARE [/COLOR]v_code number;
46K
18 января 2009 года
carlos13
3 / / 17.01.2009
Генерим процедуру:

create or replace procedure main
(
a in number,
b in number,
c out number
)
is
begin
c := a + b;
end main;

Содержание файла test.sql:

declare
OutVar number;
begin
main (1, 2, OutVar);
dbms_output.put_line (OutVar);
end;
/

Вызов файла в SQL*Plus:

SQL> set serveroutput on
SQL> @d:\!\test.sql;
3

Процедура PL/SQL успешно завершена.
263
18 января 2009 года
koltaviy
816 / / 16.12.2004
1
 
Код:
begin
DECLARE v_n number;
DECLARE v_code number;
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;

Цитата:
Соединено.
------ Running 'C:\Documents and Settings\user\Рабочий стол\sms.sql' @ISBC.ussddb ------
DECLARE v_code number;
*
ошибка в строке 3:
ORA-06550: line 3, column 1:
PLS-00103: Encountered the symbol "DECLARE" when expecting one of the
following:
begin function package pragma procedure subtype type use
<идентификатор>
<идентификатор с двойными кавычками-разделителями> form
current cursor
The symbol "begin" was substituted for "DECLARE" to continue.
ORA-06550: line 4, column 6:
PLS-00103: Encountered the symbol "." when expecting one of the following:
constant exception <идентификатор>
<идентификатор с двойными кавычками-разделителями> table
LONG_ double ref char time timestamp interval date binary
n
ORA-06550: line 5, column 7:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
constant exception <идентификатор>
<идентификатор с двойными кавычками-разделителями> table
LONG_ double ref char time timestamp interval date binary
n





---------------------- Done ----------------------


2

 
Код:
DECLARE v_n number;
DECLARE v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
Цитата:
Соединено.
------ Running 'C:\Documents and Settings\user\Рабочий стол\sms.sql' @ISBC.ussddb ------
DECLARE v_code number;
*
ошибка в строке 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "DECLARE" when expecting one of the
following:
begin function package pragma procedure subtype type use
<идентификатор>
<идентификатор с двойными кавычками-разделителями> form
current cursor
The symbol "begin" was substituted for "DECLARE" to continue.
ORA-06550: line 6, column 4:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the
following:
begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<идентификатор>
<идентификатор с





---------------------- Done ----------------------




Цитата:
Связываемые переменные(VARIABLE/VAR) можно использовать как параметры хранимых процедур или непосредственно, в анонимных PL/SQL-блоках.

- вот поэтому я использовал данный оператор.

46K
18 января 2009 года
carlos13
3 / / 17.01.2009
DECLARE
v_n number;
v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
/
263
18 января 2009 года
koltaviy
816 / / 16.12.2004
Цитата: carlos13
DECLARE
v_n number;
v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
/


Правильный вариант. Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог