Sql server 无法识别存储过程参数中的正斜杠
我正在进行以下存储过程调用:Sql server 无法识别存储过程参数中的正斜杠,sql-server,stored-procedures,Sql Server,Stored Procedures,我正在进行以下存储过程调用: 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的
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
的一部分?正斜杠(“/”)是RUN命令的快捷方式(如mysql或sqlserver中的“go”)
尝试使您的参数与语句(可能是基础列)的类型匹配,并为其指定长度:
ALTER PROCEDURE [dbo].[MyStoredProcedure]
@MyId int,
@MyVarField NVARCHAR(4000)
AS
...
我认为目前的失败与斜杠无关。试试这个:
CREATE PROCEDURE dbo.foo
@bar VARCHAR
AS
PRINT @bar;
GO
EXEC dbo.foo '12345';
有关背景资料,请阅读:
exec MyStoredProcedure@MyId=2,@MyVarField='lll/kkk'
?啊,代码是由PetaPoco生成的-我刚刚复制了它的运行状态,这是nvarchar上的长度,谢谢…非常奇怪,它没有/,嘿,呵呵