oracle表的存储参数
① ORACLE中如何为存储过程传递参数
给你一个 传递参数的例子
sql> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procere created.
SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procere successfully completed.
SQL>
② oracle存储过程,为什么创建的时候还要传参数不是应该调用的时候传吗
你理解是对的,存储过程在创建的时候是不需要输入参数的,只有在调用的时候才需要传递参数。
首先,存储过程中你定义参数的时候没有指定输入输出,vsalary IN ,vsalary ,IN 或者OUT 输出参数。
create or replace procere p_employee(vsalary IN number,vsalary2 IN number)
as.....
vsalary 和vsalary2即为变量名,在后面游标中直接使用变量名,不需要&vsalary 和&vsalary2。
按存储过程规范来修改一下,,祝你成功。
③ Oracle存储过程的带参存储过程
模式描述IN参数(默认模式)(输入参数)用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。OUT参数(输出参数)用来从过程中返回值给调用者,不能将此参数的值赋给另一个变量,不能是常量或表达式。在过程体内,必须给OUT参数赋值。INOUT参数(输入输出参数)既可以从调用者向过程中传递值,执行过程后还可返回可能改变了的值给调用者。 模式描述IN参数(默认模式)(输入参数)用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。OUT参数(输出参数)用来从过程中返回值给调用者,不能将此参数的值赋给另一个变量,不能是常量或表达式。在过程体内,必须给OUT参数赋值。INOUT参数(输入输出参数)既可以从调用者向过程中传递值,执行过程后还可返回可能改变了的值给调用者。模式
描述
用来从调用环境中向存储过程传递值,不能给IN参数赋值,
给此参数传递的值可以是常量、有值的变量、表达式等。
用来从过程中返回值给调用者,不能将此参数的值赋给另
一个变量,不能是常量或表达式。在过程体内,必须给
OUT参数赋值。
既可以从调用者向过程中传递值,执行过程后还可返回可能
改变了的值给调用者。 如果形式参数是IN模式的参数,实际参数可以是一个具体的值或一个有值的变量;如果形式参数是OUT模式的参数,实际参数必须是一个变量,当调用过程后,此变量就被赋值了。可以输出此变量的值来测试过程执行的结果。如果形式参数是INOUT模式的参数,则实际参数必须是一个预先已经赋值的变量。执行完过程后,该变量被重新赋值,可以输出此变量的值来测试过程执行结果。
④ oracle 存储过程中怎么返回参数
存储过程定义参数时,变量名的后面加上关键字OUT,在存储过程执行中对这个参数进行赋值。等存储过程执行结束之后,可以在sqlplus中获得这个参数返回的值。