当前位置:首页 » 存储配置 » 存储过程返

存储过程返

发布时间: 2022-08-27 20:32:00

㈠ 调用存储过程返回什么类型

随便,自定义out变量。可以是任何数据类型。

sql存储过程返值:return 3是对应哪个

return 3 表示 “借书失败”。 借阅号是每次取最大值,然后加1,这个字段应该是唯一的,大概是主键或唯一键。当多人同时操作时,可能发生并发错误,并返回3。

USE 图书借阅管理
GO
CREATE PROC 借书过程
@借书证号 char(5),@图书名称 varchar(40),@作者 varchar(20)
AS
DECLARE @借阅号 int,@图书编号 varchar(6)
IF EXISTS (SELECT * FROM 图书信息
WHERE 图书名称=@图书名称 and 作者=@作者 and 状态=0)
BEGIN

BEGIN TRANSACTION
SELECT @图书编号=图书编号 FROM 图书信息
WHERE 图书名称=@图书名称 and 作者=@作者 and 状态=0
UPDATE 图书信息
SET 状态=1
WHERE 图书编号=@图书编号
IF @@error!=0
BEGIN
ROLLBACK TRANSACTION
PRINT '更新图书信息表失败。'
RETURN 1
END
SELECT @借阅号=借阅号
FROM 租借信息 ORDER BY 借阅号
IF @借阅号 is null
SET @借阅号=0
INSERT 租借信息(借阅号,借书证号,图书编号,借书日期) VALUES (@借阅号+1,@借书证号,@图书编号,getdate())
IF @@error!=0 ----------------
BEGIN --------------
ROLLBACK TRANSACTION -------------
PRINT '借书失败。' ------------------ 3
RETURN 3 ----------------------
END ----------------------------------
UPDATE 学生信息
SET 借书册数=借书册数+1
WHERE 借书证号=@借书证号
IF @@error!=0
BEGIN
ROLLBACK TRANSACTION
PRINT '更新学生信息失败。'
RETURN 4
END
COMMIT TRANSACTION
PRINT '恭喜您借书成功!图书编号是:'+@图书编号
RETURN 0
END
ELSE
BEGIN
PRINT '图书已经借出或没有。'
RETURN 2

END

㈢ 为什么存储过程总返回

你是用ExecuteNonQuery进行“添加”操作的把?

ExecuteNonQuery 不返回任何行数据,但映射到参数的任何输出参数或返回值都会用数据进行填充。
对于查询更新删除操作UPDATE、INSERT 和DELETE 语句,返回值为该命令所影响的行数。
对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1

如果执行了存储过程,返回值必定是-1 , 因此不能根据返回值来判断其是否执行成功。

㈣ 存储过程返回指定的字段

如果是oracle或者db2之类的,可以先通过sequnce获取id,再做保存,如果是SQL Server,可以用:IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值

SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
或者根据表的唯一条件查找出来。
我个人一般不建议在SQL Server里面用自动增长的id

㈤ 如何获取存储过程返回值

楼主会在c#中使用存储过程吗?
如果会的话,sql执行函数赋值给一个变量就可以了
sqlconnection
cnn
=
new
sqlconnection();
cnn.connectionstring
=
"data
source
=
数据源;uid=sa;pwd
=
;database=数据库名";
cnn.open();//数据库连接
//设置存储过程参数
sqlparameter
prm;
sqlcommand
cmd
=
new
sqlcommand();
cmd.connection
=
cnn;
cmd.commandtype
=
commandtype.storedprocere;
cmd.commandtext
=
"存储过程名";
//项目类型
prm
=
new
sqlparameter();
prm.parametername
=
"参数名1";
prm.sqldbtype
=
sqldbtype.varchar;
prm.size
=
50;
prm.value
=
combobox1.text;
prm.direction
=
parameterdirection.input;
cmd.parameters.add(prm);
...
//可以继续设置参数,参数个数由存储过程的具体内容决定
cmd.executenonquery();//执行存储过程
实际上如果要获取存储过程的返回值,只要将上面一句代码修改成:
int
retn
=
cmd.executenonquery();
就可以了

㈥ 怎样让SqlServer的存储过程返回结果集

1、返回结果集

这是客户端应用程序返回结果的最通用的方法。结果集是通过使用SELECT语句选择数据产生的。结果集可以从永久表、临时表或局部变量中产生。将结果返回到另一个存储过程不是一种有效的方法。存储过程不能访问另一个存储过程建立的结果集。

例如从永久表中返回结果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
例如从局部变量中创建结果集:

USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromVariable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = ‘172-32-1176’
SELECT @au_id
GO

㈦ sqlserver2005 存储过程返回值的问题

返回结果的方式有很多我说两种,一种是利用存储过程的参数可以把存储过程的结果返回,另外一种是在外部接收存储过程内部return出来的结果。当然啦,还可以在存储过程内部select要返回的结果。
比如:

createproctest
@p_errormsgvarchar(80)=''out
as
select@p_errormsg='测试'
return-100
go

--------------------------------------------------------------

declare@errorcodeint
declare@errormsgvarchar(80)
exec@errorcode=test@errormsgout

select@errorcodeaserrorcode,@errormsgaserrormsg
--@errorcode是return出来的结果@errormsg是输出参数@p_errormsg的执行结果

㈧ SQL存储过程带返回

你这个存储过程,这样直接返回字符串,是不行的。存储过程直接返回,只能返回int类型的数据,或者是int类型的字符串。
你需要为你的存储过程定义一个输出参数。然后在调用时,接收这个输出参数。

㈨ SQL 取存储过程的返回值

你这个
存储过程
,这样直接返回字符串,是不行的。存储过程直接返回,只能返回int类型的数据,或者是int类型的字符串。
你需要为你的存储过程定义一个输出参数。然后在调用时,接收这个输出参数。

热点内容
循迹小车算法 发布:2024-12-22 22:28:41 浏览:80
scss一次编译一直生成随机数 发布:2024-12-22 22:04:24 浏览:954
嫁接睫毛加密 发布:2024-12-22 21:50:12 浏览:973
linuxbin文件的安装 发布:2024-12-22 21:46:07 浏览:796
vlcforandroid下载 发布:2024-12-22 21:45:26 浏览:662
电脑做网关把数据发送至服务器 发布:2024-12-22 21:44:50 浏览:429
新华三代理什么牌子的服务器 发布:2024-12-22 21:33:21 浏览:340
欢太会员密码是什么 发布:2024-12-22 20:57:28 浏览:74
sqllocaldb 发布:2024-12-22 20:07:08 浏览:126
如何找到我的服务器 发布:2024-12-22 19:52:14 浏览:301