oracle存储过程

本文介绍了一个具体的案例,即将SQLServer中的存储过程转换为Oracle的存储过程,并提供了详细的实现步骤,包括创建自定义类型、编写返回游标的函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个sqlserver中写的存储过程,现在要将它转到oracle上来,不知道如何修改啊!请高手帮帮小女子啊!
根据条件取数据集:
CREATE PROCEDURE [dbo].[UserInfo_Get]
@UserID nvarchar(3),
@UserName nvarchar(20)
AS
declare @sql as nvarchar(2000)
begin
set @sql='select * from Users where 1 = 1 '+
case @UserName when '' then '' else ' and UserName = '''+@UserName+'''' end +
case @UserID when '' then '' else ' and UserID = '''+@UserID+'''' end
execute(@sql)
end问题补充:

是的,我是要返回游标。。。
可是不知道怎么写啊。。


你这个写成存储过程有什么用的? 检索了一些数据出来,你应该是要返回这些数据吧?应该要写个函数返回游标吧

-- 先创建一个自定义类型
create or replace package types as
type cur_type is ref cursor;
end;

-- 返回游标的函数
CREATE OR REPLACE FUNCTION f_test(
in_userId VARCHAR2 ,
in_userName VARCHAR2 )
RETURN types.cur_type
AS
v_cursor types.cur_type;
v_sql VARCHAR2(2000);
BEGIN
v_sql := 'select * from Users where 1 = 1';

IF in_userName IS NOT NULL THEN
v_sql := v_sql||'and UserName = '''||in_userName||'''';
END IF;

IF in_userId IS NOT NULL THEN
v_sql := v_sql||'and UserID = '''||in_userId||'''';
END IF;

OPEN v_cursor FOR
v_sql;

RETURN v_cursor;

END f_test;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值