高手们帮我看看这个存储过程有什么问题,怎么没有返回值呢? to :zheninchangjiang(哈哈吼吼嘿嘿) 我也是觉得没有问题的啊,但是它就是在运行的时候没有返回值给我啊急死人了有谁能帮我解决它啊?!?!郁闷啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一,你自己可以做个简单的查询,来看看是不是得到的值是NULL第二、你是不是在程序中应用,我 想你应该是在程序中应用,请注意参数设置的问题,一定不能是input其他应该没有问题了 to :zheninchangjiang(哈哈吼吼嘿嘿) 1.我做过查询了,返回的是NULL值2.我肯定它是Output的。贼郁闷呀。 写的有问题AS select @BorrowedNumber = ReaderBorrowedbooks from Reader where ReaderID = @ReaderID RETURN 要用动态sql to:xyxfly(小虾米 ╰⊙ō⊙╯ 至今思项羽,不肯过江东.) 可以说详细点吗???要怎么样用动态SQL呢???直接在程序里写select查询数据库吗????那为什么不能用这个存储过程来返回值呢? 出错的是这个变量@BorrowedNumber如果去了这个变量就可以得到查询的值,但是我不知道怎么样返回去select ReaderBorrowedbooks from Reader where ReaderID = @ReaderID RETURN try:---》AS exec('select '+@BorrowedNumber+' = ReaderBorrowedbooks from Reader where ReaderID = '+@ReaderID+' RETURN ') 楼主的代码没有语法问题,估计是调用的问题.在调用时输出参数要加上OUTPUT关键字,这样试试:ALTER PROCEDURE dbo.StoredProcedureReaderBorrowedNumber ( @ReaderID char(10), @BorrowedNumber int OUTPUT )AS select @BorrowedNumber = ReaderBorrowedbooks from Reader where ReaderID = @ReaderID print @BorrowedNumber /*增加此行,用于比较上面的语句得到的@BorrowedNumber*/ RETURN GO----调用存储过程declare @ReaderID char(10)declare @BorrowedNumber intset @ReaderID = '123'EXEC StoredProcedureReaderBorrowedNumber @ReaderID,@BorrowedNumber OUTPUT /*调用时加上OUTPUT关键字*/select @BorrowedNumber /*查看@BorrowedNumber,比较一下print@BorrowedNumber是否相同*/ 仍然不知道是什么问题,但还是感谢各位的热情解答暂时使用 xyxfly(小虾米 ╰⊙ō⊙╯ 至今思项羽,不肯过江东.) 的方法,解决了这个问题,只是不知道为什么这个存储过程用不了,郁闷ING 问题出在你@BorrowedNumber没有初始化 请教 SQL(在线求教) sql问题 SQL DateTime类型的字段能存入空值吗?如何存?求方法 问:使用本地系统账户和域用户账户的区别? 求助:oracle中,如何取日期最小的不同记录 SQL数据表按天横向分类汇总? 数据恢复 BULK Insert中的那个文件名的参数必须是常量吗?我想做一个包含Bulk insert的存储过程,把那个文件名作为参数,为什么不行呢? 数据库恢复问题 采用分区存储数据提高效率的疑问 又没分了,求如何判断一个数据库实体中是否有表t_log 关于select top N * from Table ,N能不能用变量代替??
第二、你是不是在程序中应用,我 想你应该是在程序中应用,请注意参数设置的问题,一定不能是input
其他应该没有问题了
2.我肯定它是Output的。
贼郁闷呀。
select @BorrowedNumber = ReaderBorrowedbooks
from Reader
where ReaderID = @ReaderID
RETURN 要用动态sql
要怎么样用动态SQL呢???
直接在程序里写select查询数据库吗????
那为什么不能用这个存储过程来返回值呢?
@BorrowedNumber
如果去了这个变量就可以得到查询的值,但是我不知道怎么样返回去
select ReaderBorrowedbooks
from Reader
where ReaderID = @ReaderID
RETURN
:
---》
AS
exec('select '+@BorrowedNumber+' = ReaderBorrowedbooks
from Reader
where ReaderID = '+@ReaderID+'
RETURN ')
ALTER PROCEDURE dbo.StoredProcedureReaderBorrowedNumber
(
@ReaderID char(10),
@BorrowedNumber int OUTPUT
)
AS
select @BorrowedNumber = ReaderBorrowedbooks
from Reader
where ReaderID = @ReaderID
print @BorrowedNumber /*增加此行,用于比较上面的语句得到的@BorrowedNumber*/
RETURN
GO
----调用存储过程
declare @ReaderID char(10)
declare @BorrowedNumber int
set @ReaderID = '123'
EXEC StoredProcedureReaderBorrowedNumber @ReaderID,@BorrowedNumber OUTPUT /*调用时加上OUTPUT关键字*/select @BorrowedNumber /*查看@BorrowedNumber,比较一下print@BorrowedNumber是否相同*/
暂时使用 xyxfly(小虾米 ╰⊙ō⊙╯ 至今思项羽,不肯过江东.) 的方法,解决了这个问题,
只是不知道为什么这个存储过程用不了,郁闷ING