使用SQL Server 2005和VB.Net
表1
ID Name Dept
001 Raja IT
002 Ravi CSE
003 Suns IT
存储过程
Create Procedure Selecttable1 As Select ID, Name, Dept from table1
我想用
之类的条件执行存储过程cmd = new sqlcommand("Exec SelectTable1 where id like '" & idsearch.Text & "%' ", dbcon)
cmd.ExecuteNonQuery
idsearch.Text - 文本框输入值
当我尝试运行上面的查询时,它显示错误。
如何执行带条件的存储过程?
需要查询帮助
答案 0 :(得分:3)
您似乎正在寻找使用参数运行存储过程。
为此,需要使用参数创建存储过程,调用它的代码应该传递它们。
存储过程:
Create Procedure Selecttable1
@inID INT
As Select ID, Name, Dept from table1
WHERE ID = @inID
代码:
cmd = new SqlCommand("SelectTable1", dbcon)
cmd.Parameters.Add(new SqlParameter("@inID", idsearch.Text))
不使用类似示例("Exec SelectTable1 where id like '" & idsearch.Text & "%' "
)的构造,因为这是一个开放的SQL Injection漏洞。
您应该使用parameters,如上所述,以避免这种情况。
答案 1 :(得分:0)
我会创建第二个存储过程,它将“idsearch”作为参数并直接在基础查询上应用LIKE条件。
e.g。
CREATE PROCEDURE MySproc2
@IDSearch VARCHAR(100)
AS
BEGIN
SELECT SomeField
FROM YourTable
WHERE AnotherField LIKE @IDSearch + '%'
END
答案 2 :(得分:0)
以下是http://msdn.microsoft.com/en-us/library/aa258259(SQL.80).aspx的标准SQL Server文档中的示例(不包含您的数据)
CREATE PROCEDURE au_info2
@lastname varchar(30) = 'D%',
@firstname varchar(18) = '%'
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
WHERE au_fname LIKE @firstname
AND au_lname LIKE @lastname
GO
您可以从我链接到的网站找到SQL Server所需的大部分文档。