当前位置:首页 » 存储配置 » 存储过程游标参数

存储过程游标参数

发布时间: 2023-03-22 04:44:22

A. ORACLE存储过程里游标的结果集怎么带参数

SELECT T.APPLY_USER FROM APPLYINFO T WHERE T.APPLY_ID = APPLY_ID;
这个语句已经写对了,还有什么问题?

B. 存储过程中输出参数为游标的时候怎么处理

你的意思是不是要获取到“当前用户:user_id”这个的内容,如果是,两个方式可以解决:
1.通过存储过程的出参,将“当前用户:user_id”连接串返回;
比如:
假设你的过程叫,prc_test,在参数列表中增加出参。
create or replace procere prc_test(入参 in 类型, 出参 out 类型) is
begin
-- 逻辑实现
end;
出参就是你要把内容放进去,用来传值的变量。
2.在过程中保存一张临时表,然后在java中查出这个临时表中保存的数据。
定义临时表table_temp
在过程中
insert into table_temp(msg) values ('当前用户:' || user_id);

C. cx_Oracle,怎么调用存储过程,有一个游标的传出参数

给你个誉唤滚示例,庆余望链橡采纳

create or replace FUNCTION contact
(
p_cursor SYS_REFCURSOR,
p_exclude_null VARCHAR2 := 'T',
p_del VARCHAR2 := ','
) RETURN VARCHAR2 IS
l_value VARCHAR2(32767);
l_result VARCHAR2(32767);
BEGIN
LOOP
FETCH p_cursor
INTO l_value;
EXIT WHEN p_cursor%NOTFOUND;
l_result := l_result || p_del || l_value;
END LOOP;
RETURN substr(l_result, 2);
END;
/

DECLARE
l_result VARCHAR2(32767);
BEGIN
SELECT contact(CURSOR (SELECT tname FROM tab WHERE rownum < 10)) INTO l_result FROM al;
dbms_output.put_line(l_result);
END;

D. ORACLE存储过程中游标作为输出参数调用时怎么报错

你的意思是不是要获取到“当前用户:user_id”这个的内容,如果是,两个方式可以解决:
1.通过存储过程的出参,将“当前用户:user_id”连接串返回;
比如:
假设你的过程叫,prc_test,在参数列表中增加出参。
create or replace procere prc_test(入参 in 类型, 出参 out 类型) is
begin
-- 逻辑实现
end;
出参就是你要把内容放进去,用来传值的变量。
2.在过程中保存一张临时表,然后在java中查出这个临时表中保存的数据。
定义临时表table_temp
在过程中
insert into table_temp(msg) values ('当前用户:' || user_id);

E. oracle存储过程的参数游标应该怎样来赋值

oracle存储过程的参数游标应该怎样来赋值
可以使用动态游标。
REF CURSOR 存储过程中使用 open cursor xxx for select xxx ;

F. 存储过程中使用游标带参数的目的是什么,为什么不能将参数直接放在procere里面呢,感觉怪怪的

snowy_howe 回答是正确的.

下面我粘贴一下 使用 使用游标带参数的例子, 与 不使用的例巧梁子, 你可以对照一下.

-- 首先是一个 使用 带参数的游标的例子, 也就是那个 游标(子表).

DECLARE
-- 定义游标(主表).
CURSOR c_test_main IS
SELECT id, value FROM test_main;
-- 保存主表游标数据的变量
v_main_data c_test_main%ROWTYPE;

-- 定义游标(子表).
CURSOR c_test_sub(p_main_id INT) IS
SELECT id, value
FROM test_sub
WHERE main_id = p_main_id;
-- 保存子表游标数据的变量
v_sub_data c_test_sub%ROWTYPE;
BEGIN

-- 打开游标(主表).
OPEN c_test_main;
-- 开始循环处理(主表).
LOOP
-- 填充数据(主表).
FETCH c_test_main INTO v_main_data;
-- 假如没有检索到(主表)数据,结束循环处理
Exit when c_test_main%NOTFOUND;

dbms_output.put_line('Main:'
|| TO_CHAR(v_main_data.id) || '哪神='
|| v_main_data.value );

-- 打开游标(子表).
OPEN c_test_sub(v_main_data.id);
-- 开始循环处理(子表).
LOOP
-- 填充数据(子表).
FETCH c_test_sub INTO v_sub_data;
-- 假如没有检索到(子表)数据,结束循环处理
Exit when c_test_sub%NOTFOUND;

dbms_output.put_line('-->Sub:'
|| TO_CHAR(v_sub_data.id) || '='
|| v_sub_data.value );
END LOOP;
-- 关闭游标(子表).
CLOSE c_test_sub;
END LOOP;
-- 关闭游标(主表).
CLOSE c_test_main;
END;
/

-- 下面是 SQL Server 的, 不支持 带参数的游标 的

子游标的中的 SQL 语句里面,写入子表列名 = @变量的方式。
通过在父游标中更新该变量的方式来实现同样的功能。

DECLARE
@id INT, @value VARCHAR(10),
@subid INT, @subvalue VARCHAR(10);
BEGIN
-- 定义游标(主表).
DECLARE c_test_main CURSORFOR
SELECT id,valueFROM test_main;
-- 注意:假如子表的游标定义在这里,执行的时候,将得不到结果
-- 打开游标(主表).
OPEN c_test_main;

WHILE 1=1
BEGIN
-- 填充数据.
FETCH NEXT FROM c_test_main INTO @id, @value;
-- 假如未检索到(主表)数据,退出循环.
IF@@fetch_status!= 0 BREAK;

PRINT'Main:'+CAST(@id asvarchar)+'='+ @value;

-- 定义游孝缓运标(子表).
DECLARE c_test_sub CURSORFOR
SELECT id,value
FROM test_sub
WHERE main_id = @id;

-- 打开游标(子表).
OPEN c_test_sub;

WHILE 2=2
BEGIN
-- 填充数据.
FETCH NEXT FROM c_test_sub INTO @subid, @subvalue;
-- 假如未检索到(子表)数据,退出循环.
IF@@fetch_status!= 0 BREAK;

PRINT'Sub:'+ @subvalue;
END;

-- 关闭游标(子表)
CLOSE c_test_sub;

-- 释放游标(子表).
DEALLOCATE c_test_sub;
END;

-- 关闭游标(主表)
CLOSE c_test_main;
-- 释放游标(主表).
DEALLOCATE c_test_main;
END;
go

G. oracle存储过程中使用游标作为out类型参数,求救!

1、你定义的【RET_CURSOR_VALUE】是一个光标变量,当他作为参数传入过程【GET_EMPINFOBYDEPNO】时候已经被打开(就是open...for),在主程序中再度打开是没有必要的也是错误的(且光标变量只能用【open...for】的形式打开)。
2、所以把【OPEN
RET_CURSOR_VALUE】这句话删掉,就没有问题了。
*******************************
口说无凭,oracle实施log请参照:
说明:我把empno改成20了(因为表里面没有1的数据),还有把open语句注掉了。
*******************************
[SCOTT@ORA1]
SQL>DECLARE
2
RET_CURSOR_VALUE
PKG_CONST.REF_CURSOR;
3
RET_EMPNO
EMP.EMPNO%TYPE;
4
RET_ENAME
EMP.ENAME%TYPE;
5
BEGIN
6
GET_EMPINFOBYDEPNO(20,
RET_CURSOR_VALUE);
7
--OPEN
RET_CURSOR_VALUE
;--报游标类型有误,未解决!!!
8
LOOP
9
FETCH
RET_CURSOR_VALUE
10
INTO
RET_EMPNO,
RET_ENAME;
11
EXIT
WHEN
RET_CURSOR_VALUE%NOTFOUND;
12
DBMS_OUTPUT.PUT_LINE('empNo
is:'
||
RET_EMPNO
||
',empName
is'
||
13
RET_ENAME);
14
END
LOOP;
15
CLOSE
RET_CURSOR_VALUE;
16
END;
17
/
empNo
is:7369,empName
isSMITH
empNo
is:7566,empName
isJONES
empNo
is:7902,empName
isFORD
---
以上,希望对你有所帮助。

H. java调用的存储过程,能否传入游标参数

java调用的存储过程,不能传入游标参数,但是存储过程调用的内部存储过程,可以存入游标参数。未完待续

I. 存储过程使用游标

ALTER proc [dbo].[存储过程名]
as
begin
declare 游标名字 cursor for select 列名 from 表名 where 条件--先申明游标指向查询出瞎亏州的结果,一列,或者多列都可以,空仔条件自定
declare 变量名 varchar(400)--存储取到的值
open 游标名 --开启游标
while @@FETCH_STATUS=0--取值
begin
fetch next FROM 游标名 into 变量名--这样就将游标指向下一行,得到的第一行值磨蔽就传给变量了
-------------------------------------------
--需要执行的操作,例如修改某表中的字段
update 表名
set 列名=值
where (修改表中的列)=变量名
-------------------------------------------
end
close 游标名--关闭游标

deallocate 游标名--释放游标
end
请采纳。

J. 关于存储过程里使用游标和循环的问题

、带参数游标for循环 一 首先编写存储程整体结构,: create or replace procere test_proc is v_date date; --变量定义 begin select sysdate into v_date from al; end test_proc; 二 定义游标: create or replace procere test_proc is v_date date; --定义变量 cursor cur is select * from ldcode; --定义游标 begin select sysdate into v_date from al; end test_proc; 三 编写for循环: create or replace procere test_proc is v_date date; --定义变量 cursor cur is select * from ldcode where rownum<一0; --定义游标 begin select sysdate into v_date from al; --游标for循环始 for temp in cur loop --temp临变量名,自任意起 Dbms_Output.put_line(temp.Code); --输某字段,使用"变量名.列名"即 end loop; --游标for循环结束 end test_proc; 四 测试运行点击【DBMS Output】标签页查看结图: END 二、带参数游标for循环 一 定义带参数游标: cursor cur(v_codetype ldcode.Codetype%TYPE) is select * from ldcode where codetype = v_codetype; --定义游标 定义游标格式: cursor 游标名称(变量定义) is 查询语句; 注意: where条件变量名v_codetype要与游标定义cur(v_codetype ldcode.Codetype%TYPE)致 二 编写for循环部: --游标for循环始 for temp in cur('llmedfeetype') loop --temp临变量名,自任意起 --cur('llmedfeetype')"游标名称(传入变量)" Dbms_Output.put_line(temp.Code); --输某字段,使用"变量名.列名"即 end loop; --游标for循环结束 三 测试运行点击【DBMS Outpu

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:944
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:741
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:372