如何将参数传递给存储过程
我在Windows Server 2008 Enterprise上使用SQL Server 2008 Enterprise。在存储过程中,我需要将参数传递给select-where-like语句。例如,如何将参数传递给存储过程
@department是存储过程的输入参数,其类型为varchar(20),
select * from sometable where somecolumn LIKE '%@department%'
,但似乎我上面的语句不工作,任何想法如何传递参数@department喜欢声明?
由于事先 乔治
select * /*But don't use * in production!*/
from sometable
where somecolumn
LIKE '%' + @department + '%'
您在连接字符串:
select * from sometable where somecolumn LIKE '%' + @department + '%'
这是一个变量,它会引号外面。
select * from sometable where somecol like '%' + @department + '%'
或者,更优选地,%s添加到变量,只是用它直接
尝试:
select * from sometable where somecolumn LIKE '%' + @department + '%'
如果您发布代码或XML,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010)以更好地格式化和语法突出显示它! – 2010-07-15 13:23:31
你可以做这样的事情:
select * from sometable where somecolumn LIKE '%' + @department + '%'
不,它不。这不是动态SQL – 2010-07-15 11:50:32
您是正确的先生。这是我在SQL中进行字符串连接时的反应。对于我所看到的一些代码仍然有恶梦。我从答案中删除了陈述。 – Josh 2010-07-16 13:37:12
良好的膝盖混蛋反应! – 2010-07-16 13:43:38
select * from sometable
where CHARINDEX(@department,somecolumn)>0
您也可以使用CHARINDEX函数。
谢谢,问题回答! – George2 2010-07-15 11:58:43