我构建了一个这样的存储过程:
create proc sp_test
(@name nvarchar(100))
as
begin
select * from company
where company.companyname like '%'+@name+'%'
end
go
现在我想测试我的存储过程。因为公司名称可能只有一个引号,例如:Bob的仓库,我使用此名称作为参数在DEV,SIT,UAT等不同环境中运行我的存储过程。我用2个单引号替换单引号。我发现我可以在DEV中获得结果,但在UAT中没有。我不知道为什么。
exec sp_test 'Bob''s Warehouse'
这是关于不同环境中的数据库设置吗?为什么完全相同的代码在一个环境中工作而在另一个环境中不工作?
提前致谢。
答案 0 :(得分:0)
如果只是因为单引号,那么在一个环境而不是另一个环境中工作是没有意义的。尝试在不同的环境中备份和恢复相同的数据并试一试,这可能是因为脏数据。如果你有像[Bob's Warehouse]这样的特定记录不适用于不同的环境,请尝试检查你看到的单引号是否真的是char(39)。您还可以尝试在不同的环境中运行[exec sp_test'Bob'+ char(39)+'Warehouse'],看看它是否有效。