0

我是 SQL Server 存储过程的新手。

请帮助理解为什么没有输出。

我有一个存储过程sp_sample,在其中给出带有条件的选择查询

PROCEDURE [dbo].[sp_sample]
    @dep nvarchar(50)
AS
BEGIN
    select * FROM emp WHERE dep= '+ @dep +'
END

vb.net 中的执行代码是

lconn = New SqlConnection(DpConnectionString)
lconn.Open()

lcmd = New SqlCommand("sp_sample", lconn)
lcmd.CommandType = CommandType.StoredProcedure

lcmd.Parameters.Add(New SqlParameter("@dep", Data.SqlDbType.VarChar)).Value = TextBox1.Text.ToString
'  lcmd.Parameters.Add(New SqlParameter("@pnv_String", Data.SqlDbType.VarChar)).Value = ""
ladp = New SqlDataAdapter(lcmd)
lds = New DataSet
ladp.Fill(lds)

DataGridView1.DataSource = lds.Tables(0)
DataGridView1.Refresh()
4

2 回答 2

5

猜测一下(没有样本输入和样本数据,我所能做的就是猜测)你的问题就在这里WHERE dep= '+ @dep +'

假设您将 dep 设置为一个值,例如select @dep = "Parvathi"

在表中,dep 的值是 Parvathi,您实际上要匹配的是字符串“+ @dep +”,它永远不会匹配字符串“Parvathi”。

您的 where 子句应该(可能)是WHERE dep= @dep

于 2013-08-09T10:17:42.360 回答
0

将您的程序更改为:

PROCEDURE [dbo].[sp_sample]    
   @dep nvarchar(50)    
AS 
BEGIN

   select * 
   FROM emp 
   WHERE dep = @dep

END

您似乎从内联查询创建了一个存储过程。

于 2013-08-09T10:12:23.437 回答