CREATE PROCEDURE 中关于 OUTPUT 的想法

孤剑 2006-12-19 11:13:49
一个简单的存储过程:
CREATE Procedure getTree
/* Param List */
@treeId int,
@treeString varchar OUTPUT,
@count int OUTPUT
AS
SELECT [name] ----- 需要注意的地方
FROM [tree]
WHERE [id]=@treeid

SELECT @count=COUNT(*)
FROM [tree]
WHERE [id]=@treeid


DECLARE @string VARCHAR,@sum int
EXECUTE getTree 3,@string OUTPUT,@sum OUTPUT
PRINT ' Total Record(s) : ' + CONVERT(varchar,@sum)
PRINT @string

GO

正常执行的结果为:
(返回 0 行)
name
----------
Node_3
Total Record(s) : 1
完成脚本 E:\projects\app\SqlTest\Create Scripts\getTree.sql 执行

问题是:

就是上面需要注意的地方的内容,更改成:SELECT @treeString =[name]
那么,在vs.net的数据库项目中,产生结果:

正在执行脚本 E:\projects\app\SqlTest\Create Scripts\getTree.sql
完成脚本 E:\projects\app\SqlTest\Create Scripts\getTree.sql 执行


为什么,更改后的结果就不显示呢?
都是使用了OUTPUT的,怎么就有这样的差别呢?
请赐教!
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hy98521 2006-12-19
  • 打赏
  • 举报
回复
问题出在print 那里. 没有返回数据. 是是当前打印出来. select 做为输出才能够保存在ds里.
libin_ftsate 2006-12-19
  • 打赏
  • 举报
回复
print 的结果只在查询分析器看到,在前端程序看不到

改成如下

CREATE Procedure getTree
/* Param List */
@treeId int,
@treeString varchar OUTPUT,
@count int OUTPUT
AS
SELECT @treeString=[name] ----- 需要注意的地方
FROM [tree]
WHERE [id]=@treeid

SELECT @count=COUNT(*)
FROM [tree]
WHERE [id]=@treeid


GO


DECLARE @string VARCHAR,@sum int
EXECUTE getTree 3,@string OUTPUT,@sum OUTPUT
select @string as str,' Total Record(s) : ' + CONVERT(varchar,@sum) as cnt

孤剑 2006-12-19
  • 打赏
  • 举报
回复
no body.

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧