我正在进行此存储过程调用:
exec sp_executesql N'EXEC MyStoredProcedure
@MyId = @0, @MyVarField = @1',
N'@0 int, @1 nvarchar(4000)',
@0=2, @1='lll/kkk'
存储过程只是一个简单的选择,正在寻找MyVarField = 'lll/kkk'
,但参数中的/
似乎打破了它......无论如何都找不到db行。
如果我传入'ffflll'
,则会找到包含lllkkk
的行,但在其中有/
时却找不到它。那是什么意思?
ALTER PROCEDURE [dbo].[MyStoredProcedure]
@MyId int,
@MyVarField varchar
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM MyTable WHERE VarField = @VarField
END
我需要对存储过程做些什么才能让它接受/ {作为varchar
的一部分?
答案 0 :(得分:2)
尝试使参数匹配与语句相同的类型(可能是基础列),并给它一个长度:
ALTER PROCEDURE [dbo].[MyStoredProcedure]
@MyId int,
@MyVarField NVARCHAR(4000)
AS
...
我认为目前的失败与斜线无关。试试这个:
CREATE PROCEDURE dbo.foo
@bar VARCHAR
AS
PRINT @bar;
GO
EXEC dbo.foo '12345';
有些背景,请阅读:
答案 1 :(得分:-2)
正斜杠(“/”)是RUN命令的快捷方式(如mysql或sqlserver中的“go”)。
http://power2build.wordpress.com/2011/12/09/forward-slash-in-sqlplus/