当前位置:首页 » 存储配置 » 调用存储过程返回值

调用存储过程返回值

发布时间: 2024-12-22 01:56:47

1. 取一个sql存储过程的返回值

当@UserID存在返回JID,否则返回-1,--存储过程Create Procere _GetUserJID(@UserID Varchar(128),@Rst Int Out)
As
Begin
Select @Rst=JID From TB_USer Where StrUserID=@UserID
If(Isnull(@Rst,0)=0)
Set @UserID=-1
Set @Rst=@UserID
End
--调用
Declare @Rst Int
Exec _GetUserJID '1001',@Rst Out
Select @Rst--函数Create Function F_GetUserJID(@UserID Varchar(128))
Returns Int
As
Begin
Declare @Rst Int
Select @Rst=JID From TB_USer Where StrUserID=@UserID
If @Rst Is Null
Set @Rst=-1
Return @Rst
End --调用Select dbo.F_GetUserJID('1001')

2. asp.net调用存储过程返回值问题

你的用法不对,存储过程的返回值不是用来返回数据的,存储过程只能返回int,而且这个int的目的是用来表示存储过程执行状态的,比如执行成功,执行错误等等。你这种情况要用output parameter,比较符合标准。

但其实这不是重点,重点是ExecuteScalar是返回结果集第一行第一列的值,不是return value,你搞错了。

3. 如何在PB中调用存储过程并取得返回值和输出值的相关推荐

没有见过调用存储过程象调用游标一样的代码,一般我是这样声明的:DECLARE Lproc_1 PROCEDURE FOR
proc_1 @as_int = :li_int OUTPUT ;
execute Lproc_cw_gz_personal_cal ;
变量li_int即为返回的值。如果要同时返回多行的数据,可以使用DATAWINDOW或者是DATASTORE来得到结果集:
string ls_sql_syntax , ls_syntax
string ls_error
integer li_ini
ls_sql_syntax = 'execute proc_1 "' + string ( li_ini ) + '"'
Datastore ldt_item
ldt_item = Create Datastore
ls_syntax = SQLCA.SyntaxFromSQL( ls_sql_syntax '', ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "创建数据存储窗口语法出现错误!" + ls_error )
RETURN - 1
END IF

ldt_item .Create( ls_syntax, ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "创建数据存储对象出现错误!" + ls_error )
RETURN - 1
END IF
ldt_item . Settransobject ( sqlca )
ldt_item . retrieve ( )
后面就通常的遍历了!

4. 存储过程中调用带返回值的函数

如果是ACCESS、MySQL、SQL 2000 数据库

SELECT * FROM tabel_ WHERE date < (now()-30)

数据库都自带很多函数的

5. 在 sql select 语句中 如何获取 存储过程的返回值

SQL Server中存储过程的返回值不是通过return语句返回的(return语句是在用户自定义函数中使用的),而是通过存储过程的参数来返回,在定义存储过程的参数时使用关键字output来指定此参数是返回值。

而在调用存储过程时,也必须使用关键字给接收返回值的变量,这样才能在调用时获得存储过程的返回值。

示例:

createproceredbo.pr_add@aint,@bint,@cintoutput
as
set@c=@a+@b
go

调用:

declare@vint
executedbo.pr_add1,2,@voutput
select@v

6. SQL Server 在一个存储过程中调用另外一个存储过程获取返回值,出现报错

第一种方法: 使用output参数

USE AdventureWorks;
GO
IF OBJECT_ID ( 'Proction.usp_GetList', 'P' ) IS NOT NULL
DROP PROCEDURE Proction.usp_GetList;
GO
CREATE PROCEDURE Proction.usp_GetList @proct varchar(40)
, @maxprice money
, @compareprice money OUTPUT
, @listprice money OUT
AS
SELECT p.name AS Proct, p.ListPrice AS 'List Price'
FROM Proction.Proct p
JOIN Proction.ProctSubcategory s
ON p.ProctSubcategoryID = s.ProctSubcategoryID
WHERE s.name LIKE @proct AND p.ListPrice < @maxprice;
-- Populate the output variable @listprice.
SET @listprice = (SELECT MAX(p.ListPrice)
FROM Proction.Proct p
JOIN Proction.ProctSubcategory s
ON p.ProctSubcategoryID = s.ProctSubcategoryID
WHERE s.name LIKE @proct AND p.ListPrice < @maxprice);
-- Populate the output variable @compareprice.
SET @compareprice = @maxprice;
GO

另一个存储过程调用的时候:

Create Proc Test
as
DECLARE @compareprice money, @cost money
EXECUTE Proction.usp_GetList '%Bikes%', 700,
@compareprice OUT,
@cost OUTPUT
IF @cost <= @compareprice
BEGIN
PRINT 'These procts can be purchased for less than
$'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
PRINT 'The prices for all procts in this category exceed
$'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
第二种方法:创建一个临时表

create proc GetUserName
as
begin
select 'UserName'
end

Create table #tempTable (userName nvarchar(50))
insert into #tempTable(userName)
exec GetUserName

select #tempTable

--用完之后要把临时表清空
drop table #tempTable--需要注意的是,这种方法不能嵌套。例如:

procere a
begin
...
insert #table exec b
end

procere b
begin
...
insert #table exec c
select * from #table
end

procere c
begin
...
select * from sometable
end

--这里a调b的结果集,而b中也有这样的应用b调了c的结果集,这是不允许的,
--会报“INSERT EXEC 语句不能嵌套”错误。在实际应用中要避免这类应用的发生。

第三种方法:声明一个变量,用exec(@sql)执行:

1);EXEC 执行SQL语句

declare @rsql varchar(250)
declare @csql varchar(300)
declare @rc nvarchar(500)
declare @cstucount int
declare @ccount int
set @rsql='(select Classroom_id from EA_RoomTime where zc='+@zc+' and xq='+@xq+' and T'+@time+'=''否'') and ClassroomType=''1'''
--exec(@rsql)
set @csql='select @a=sum(teststucount),@b=sum(classcount) from EA_ClassRoom where classroom_id in '
set @rc=@csql+@rsql
exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--将exec的结果放入变量中的做法
--select @csql+@rsql
--select @cstucount

7. C# 调用 存储过程中,参数 input output return 的含义.

input 是输入参数
output 是输出参数
return 是返回值,是存储过程中调用 RETURN 语句返回的值,调用此语句也就代表存储过程返回了,执行完毕

一般如果只需要存储过程返回一个值,那么使用RETURN就行了
如果需要多个值,那么就需要OUTPUT参数交互取值
也就是说OUTPUT和RETURN取得的效果是相同的

8. sqlserver怎么获取存储过程的返回值

1.OUPUT参数返回值

CREATEPROCEDURE[dbo].[nb_order_insert](
@o_buyeridint,
@o_idbigintOUTPUT
)
AS
BEGIN
SETNOCOUNTON;
BEGIN
INSERTINTO[Order](o_buyerid)
VALUES(@o_buyerid)
SET@o_id=@@IDENTITY
END
END

2.存储过程中获得方法:

DECLARE@o_buyeridint
DECLARE@o_idbigint
DECLARE@resultbit
EXEC@result=[nb_order_insert]@o_buyerid,o_idoutput

3.SELECT 数据集返回值

CREATEPROCEDURE[dbo].[nb_order_select](
@o_idint
)
AS
BEGIN
SETNOCOUNTON;
SELECTo_id,o_buyeridFROM[Order]
WHEREo_id=@o_id
GO

9. Entity Framework 5.0 调用存储过程 返回值为什么是int类型

存储过程的返回值类型固定为int类型,不支持其它类型,函数才可以返回多样化类型。如果你要通过存储过程传递数据出来,请使用输出型参数。
这是SQL的基础知识,和C#无关。

热点内容
小米6实际存储空间 发布:2024-12-22 13:41:25 浏览:594
sql注入补丁 发布:2024-12-22 13:32:58 浏览:120
小区高层消防逃生怎么配置 发布:2024-12-22 13:29:20 浏览:717
服务器配置光纤网卡ip 发布:2024-12-22 13:22:47 浏览:516
地图下载源码 发布:2024-12-22 13:18:40 浏览:394
navicat存储过程导出 发布:2024-12-22 13:12:44 浏览:300
androidservice线程 发布:2024-12-22 13:04:57 浏览:302
ntplinux服务器配置 发布:2024-12-22 12:28:23 浏览:268
android模拟机 发布:2024-12-22 12:26:08 浏览:609
贪玩蓝月密码如何修改 发布:2024-12-22 12:16:54 浏览:985