一个简单的存储过程:
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 @stringGO正常执行的结果为:
(返回 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的,怎么就有这样的差别呢?
请赐教!

解决方案 »

  1.   

    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
      

  2.   

    问题出在print 那里. 没有返回数据. 是是当前打印出来. select 做为输出才能够保存在ds里.