当前位置:首页 » 存储配置 » oracle存储in参数

oracle存储in参数

发布时间: 2024-06-27 23:59:26

① oracle 存储过程中in条件传参数

楼上的可以,不过有些语法错误,我改改,呵呵
---
create or replace procere pd1(p_1 number,p_2 number,p_3 number)
is
v_sql varchar2(4000);
begin
v_sql:='select * from table where id in('||p_1||','||p_2||','||p_3||')';
execute immediate v_sql;

end;
/

② oracle存储过程中怎么理解传入传出参数(in out)

Oracle 过程中定义了in|out|in out3中参数模式,每个参数可以选择其一
in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。
举个例子
create or replace procere update_price(
p_proct_id in NUMBER,
p_factor in NUMBER)
AS
.....
你在引用这个过程的时候给参数传入值
exexute update_price(2,2.5);
这是定义的2个参数就得到了值,in模式下值不能变

out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程
in out 表示高参数可以向该过程中传递值,也可以将某个值传出去

③ oracle 存储过程sql中in 参数怎么传入调试

右击存储过程,选择
测试create
or
replace
procere
pd1(p_1
number,p_2
number,p_3
number)
is
v_sql
varchar2(4000);
begin
v_sql:='select
*
from
table
where
id
in('||p_1||','||p_2||','||p_3||')';
execute
immediate
v_sql;
end;

④ oracle存储过程的in out 值传递,这是怎么传递的看不懂啊

p_user_name的IN,表示这个参数是传入参数。

p_out_val的OUT,表示这个是传出参数。也就是JAVA中return的值。

p_inoutval的IN OUT,表示这个既是传入、又是传出参数。也就是说,你可以利用它传入该存储过程,然后接到处理后的这个参数。一个参数搞定了2项功能(传入,传出)

⑤ ORACLE中如何为存储过程传递参数

第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改正薯)。通常select及DML类型的存储过程传递的是in类型的参数。

第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参举御者数是无法被外部调用的(好像游标类型的参数除外))

CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;

外部调用:

set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;

无法在外部访问到firstValue与secondValue的值。此时打印出的结果为:

first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)

ps:函数中的返回值为如下几种:

char; varchar2; number; integer; date; boolean; table; record

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.

热点内容
androidadtmac下载 发布:2024-06-30 23:08:09 浏览:152
qq空间访问量排行 发布:2024-06-30 23:03:06 浏览:592
皓影什么配置座椅通风 发布:2024-06-30 23:01:27 浏览:381
看手机解压 发布:2024-06-30 23:01:27 浏览:837
安卓手机的系统怎么升级 发布:2024-06-30 23:01:25 浏览:263
apktool回编译失败怎么回事 发布:2024-06-30 22:53:16 浏览:928
sql获取时间的日期 发布:2024-06-30 22:51:57 浏览:729
亚索编程的 发布:2024-06-30 22:35:35 浏览:880
axis2上传文件 发布:2024-06-30 22:26:04 浏览:16
安卓本地音乐怎么转移到苹果 发布:2024-06-30 22:21:54 浏览:616