var v_n number;
var v_code number;
exec p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
print;
Oracle - хранимая процедура с возвращаемыми параметрами
Код:
А кстати, что это за код, на каком языке, и что за ошибки он выдает?
Код:
var v_n number;
var v_code number;
exec p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
print;
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 ----------------------
------ 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;
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 ----------------------
------ 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;
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 ----------------------
------ 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;
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 ----------------------
------ 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-скриптом.
Код:
[COLOR=Red]DECLARE[/COLOR] v_n number;
[COLOR=Red]DECLARE [/COLOR]v_code number;
[COLOR=Red]DECLARE [/COLOR]v_code number;
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 успешно завершена.
Код:
begin
DECLARE v_n number;
DECLARE v_code number;
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
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 ----------------------
------ 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;
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 ----------------------
------ 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-блоках.
- вот поэтому я использовал данный оператор.
v_n number;
v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
/
Цитата: carlos13
DECLARE
v_n number;
v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
/
v_n number;
v_code number;
begin
p_ban.p_inc('hallo','at least',0,'en',v_n,v_code);
commit;
end;
/
Правильный вариант. Спасибо.