以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助SQL高手]存储过程在客户端调用查询不到数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21339)

--  作者:飞
--  发布时间:2012/7/9 17:44:00
--  [求助SQL高手]存储过程在客户端调用查询不到数据

学习存储过程不久,确实非常方便

但是今天发现一个问题,一个写好的存储过程,在SSMS中可以正常查询出数据,但是在客户端用SQLCommand以及执行SQL还有绑定到表都没有数据,有SQL高手请帮助看一下是不是SQL脚本的问题,谢谢!

 

 

 

USE [jks12]

GO

/****** Object:  StoredProcedure [dbo].[Pro_ChatRecordCount_Sel]    Script Date: 07/09/2012 16:33:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Description:   <用于根据参数的用户名获取其未查看的消息数目>

-- =============================================

ALTER PROCEDURE [dbo].[Pro_ChatRecordCount_Sel]

    @UserName NVARCHAR(20)

AS

BEGIN

 

    DECLARE @Tbl TABLE

    (

       用户名 NVARCHAR(20),

       接收人 NVARCHAR(20),

       级别 INT

    )

   

    --将数据插入临时表中

   

    INSERT @Tbl(用户名,接收人,级别) (SELECT 内部通讯记录.用户名,接收人,级别

       FROM 内部通讯记录

       LEFT JOIN (SELECT * FROM 最后会话时间 WHERE 用户名 = @UserName) A

       ON 内部通讯记录.接收人 = A.会话方

       WHERE 内部通讯记录.时间 > A.时间 OR A.时间 IS NULL)

      

    --SELECT * FROM @Tbl

   

    --单对单会话

    SELECT 用户名,接收人,COUNT(用户名) AS 数量

    FROM @Tbl

    WHERE 级别 = 2 AND 接收人 = @UserName

    GROUP BY 接收人,用户名 

    UNION

    --所有用户及用户组会话

    SELECT 接收人 AS 用户名,接收人,COUNT(用户名) AS 数量

    FROM @Tbl

    WHERE 级别 = 0 OR (级别 = 1 AND 接收人 IN (SELECT 分组名称 FROM 用户分组 WHERE 用户名 LIKE \'%\' + @UserName + \'%\'))

    GROUP BY 接收人

   

    DELETE @Tbl

   

END

 


--  作者:飞
--  发布时间:2012/7/9 17:53:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:1.bmp
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.bmp
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.bmp
图片点击可在新窗口打开查看

--  作者:飞
--  发布时间:2012/7/9 18:42:00
--  
顶起
--  作者:飞
--  发布时间:2012/7/10 8:36:00
--  
顶起
--  作者:狐狸爸爸
--  发布时间:2012/7/10 10:01:00
--  

收到,我们测试一下,但道理不会这样的。


--  作者:狐狸爸爸
--  发布时间:2012/7/10 10:45:00
--  
我们测试了可以啊
--  作者:lihe60
--  发布时间:2012/7/10 10:52:00
--  

代码看不懂。


--  作者:飞
--  发布时间:2012/7/10 11:51:00
--  

是不是这个存储过程中用了一个表变量的问题,我在VS中测试又可以的

 

Dim Cnn As New System.Data.SqlClient.SqlConnection("ConnectionString")

Cnn.Open()

Dim adoCmd As New System.Data.SqlClient.SqlCommand("Pro_ChatRecordCount_Sel", Cnn)

adoCmd.CommandType = CommandType.StoredProcedure

adoCmd.Parameters.Add("@UserName", SqlDbType.NVarChar, 20)

adoCmd.Parameters("@UserName").Value = "Frances"

Dim DtApt As New System.Data.SqlClient.SqlDataAdapter(adoCmd)

Dim tmptbl As New DataTable

DtApt.Fill(tmptbl)

DataGridView1.DataSource = tmptbl

Cnn.Close()


--  作者:狐狸爸爸
--  发布时间:2012/7/10 11:53:00
--  
我们测试的时候,也传递了变量啊
--  作者:飞
--  发布时间:2012/7/10 11:53:00
--  
不知道你们用的是什么方法测试的呢?