SQL SERVER 存储过程中字符串定义产生的影响

近期在SQL SERVER里添加了一个存储过程,有几个输入参数,其中一个是接收车间名称,作为模糊(LIKE)过滤条件。但是在测试过程中,返回的结果这个过滤条件一直不起作用,在后端控制台看到调用这个存储过程时车间名称确实作为参数传递给了存储过程,但是却返回了所有车间数据。开始排查:
(1)用EXEC 直接执行存储过程,给了“车间名称”参数传递了值,发现过滤条件有作用,结果只返回了本车间的数据。说明SELECT语句没问题。
(2)是否在配置参数中错配了数据库名,导致调用的是旧的存储过程代码?——结果排除!
那么参数传递到存储过程后到底发生了什么?试着把程序运行后储存过程接收后的变量内容存储到一个字段中,然后惊奇的发现内容居然是空!所有过滤条件里 LIKE '%'+车间名称+'%'就返回了所有车间数据。可是到底为什么明明在后台控制台看到已经车间名称(非空)传递给了存储过程,而且任何错误也没报!?
后来仔仔细细查看了存储过程,终于发现变量定义是:DECLARE @WORKSHOPNAME VARCHAR ,没有给定VARCHAR的长度(因为参数比较多,
SQL SERVER 存储过程中字符串定义产生的影响
近期在SQL SERVER里添加了一个存储过程,有几个输入参数,其中一个是接收车间名称,作为模糊(LIKE)过滤条件。但是在测试过程...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



