这是我的Storprocedure
CREATE PROCEDURE [B]
@BoardID varchar(5000)
AS
declare @sB varchar(8000)
set @sB= ' '
Select name,id,address from BoardDetail
WHere IsActive=1 and @sB=@BoardID
GO
Run Code Online (Sandbox Code Playgroud)
这里我发送字符串参数....我的@BoardID包含字符串条件,如:name = a和id = 5 and address = adfas
我想只是提供字符串,并要设置在旁边的和任何一个可以帮助我修正错误
您需要构建动态查询.
请参阅此文章:动态SQL的诅咒和祝福.它是动态SQL的规范参考.
正如其他人所指出的那样,您应该谨慎使用动态SQL,并且在没有其他方法适合的情况下.动态SQL可以开辟SQL注入攻击的风险,并且如"动态SQL的诅咒和祝福"中所述,还有一些需要注意的细微问题.
这是一个非常糟糕的做法.它将限制您验证SQL参数,减少或消除查询计划重用的能力,并且可能会扩大臭氧层中的漏洞.
我开玩笑说最后一个 - 而不是前两个.
你创建三个参数会好得多:
CREATE PROCEDURE B
@name varchar(10),
@id int,
@address varchar(20)
AS
BEGIN
SELECT name, address FROM BoardDetail
WHERE IsActive = 1 AND BoardID = @id AND name = @name AND address = @address
END
Run Code Online (Sandbox Code Playgroud)
相信我 - 地狱之路是用连接的查询字符串铺平的.