繁体   English   中英

使用vb.net的SQL Server存储过程

[英]SQL Server stored procedure with vb.net

我是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()

猜测(没有样本输入和样本数据,我只能猜测),您的问题在这里WHERE dep= '+ @dep +'

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

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

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

将您的过程更改为此:

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

   select * 
   FROM emp 
   WHERE dep = @dep

END

似乎您是从内联查询创建存储过程的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM