创建存储过程如下:
CREATE procedure bookproc
@id int, @title char(20) OUTPUT
as
select @title=title from book where id= @id
执行该存储过程的方法正确的是(d)。(选择一项)
a) exec bookproc 1,@title output
print @title
b) exec bookproc @id =1,@title output
print @title
c) declare @title char(20)
exec bookproc 1,@title output
print @title
d) declare @title char(20)
exec bookproc @id =1,@title output
print @title
------解决方案--------------------
c
------解决方案--------------------
c
------解决方案--------------------
c是对的
如果D写成这样也是对的
d)declare @title char(20)
exec bookproc @id =1,@title [email protected] output
print @title
------解决方案--------------------
验证 C
------解决方案--------------------
C
------解决方案--------------------
c d
------解决方案--------------------
更正:
只有c正确
------解决方案--------------------
一旦使用了 '@name = value ' 形式之后,所有后续的参数就必须以 '@name = value ' 的形式传递。
------解决方案--------------------
DECLARE @bookTitle nvarchar(50)
EXEC bookproc
@bookID = 1,
@bookTitle = @bookTitle OUTPUT
SELECT @bookTitle as N '@bookTitle '
如果要 '@name = value '这么传递,那么上述可以解决问题。
------解决方案--------------------
当然最后还是 print @bookTitle
------解决方案--------------------
mark
------解决方案--------------------
不试一下还真的不知道,只有C
D不行,报错“并以 [email protected] = value' 的形式传递后续的参数。一旦使用了 [email protected] = value' 形式之后,所有后续的参数就必须以 [email protected] = value' 的形式传递。”
------解决方案--------------------
c
d 错误 @id 都没申明能这样用吗??
本人觉得不用讨论的
d) declare @title char(20)
exec bookproc @id =1,@title output
print @title