我需要创建一个接收参数(名为@codes)的存储过程。
这是一个字符串,其中包含由分号分隔的代码列表。 我需要查看一个表并返回所有带有代码的行(在EANcodes列中),该代码在@codes参数中传递。
任何人都可以帮助我开始。我对存储过程的了解非常有限。
提前致谢。
答案 0 :(得分:1)
理想情况下,我更愿意看到以另一种方式传递的参数,使用table-value parameter(假设SQL 2008)或XML,可以很容易地将其粉碎成表格。
或者,使用SQL拆分函数(一个示例为here)将字符串解析为临时表,然后在选择查询中对该表进行连接。
答案 1 :(得分:0)
存储过程实际上不是要将字符串列表作为参数来处理。你最好在你的应用程序代码中拆分它,然后多次调用存储过程作为参数。
但是,如果您觉得有必要这样做。您可以循环遍历字符串,并使用CHARINDEX查找分号的下一个索引,然后使用SUBSTRING获取下一个代码。然后,您可以在每次迭代时使用CTE作为匹配的行,并且在完成循环时,只需返回CTE。这非常hacky,但我想不出有任何其他方法可以做到这一点。 (这些是T-SQL字符串函数)
有关字符串操作函数的信息(在T-SQL中):http://msdn.microsoft.com/en-us/library/ms186323.aspx
以下是MySQL中类似的功能:http://dev.mysql.com/doc/refman/5.1/en/string-functions.html