带参数的存储过程应该怎么写呢@chej是传递的查询条件,那样写会出错

wanggenhu0 2018-08-26 10:22:10
ALTER PROCEDURE [dbo].[shouYeWuYuan]
(
@ywy nvarchar(50),
@chej nvarchar(500))
AS

begin
if( @ywy='' or @ywy is null)
begin

SELECT xiagsj as 定稿日期,kehuname as 客户
FROM chanpin a



where (a.tingzis!=1 or a.tingzis is null) @chej


order by djsj desc
end
end
@chej是个传递的查询条件,我这里应该怎么写才能不出错,谢谢
...全文
227 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanggenhu0 2018-08-27
  • 打赏
  • 举报
回复
引用 4 楼 wmxcn2000 的回复:
@chej nvarchar(500))

是一个已经拼接好的条件?
对拼接好的条件
卖水果的net 版主 2018-08-27
  • 打赏
  • 举报
回复
@chej nvarchar(500)) 是一个已经拼接好的条件?
吉普赛的歌 版主 2018-08-27
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[shouYeWuYuan]
(
@ywy nvarchar(50),
@chej nvarchar(500)
)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
SET @sql=
'SELECT xiagsj as 定稿日期,kehuname as 客户
FROM chanpin a
where (a.tingzis!=1 or a.tingzis is null)
@chej
order by djsj desc
'
SET @sql=REPLACE(@sql,'@chej', CASE WHEN @ywy>'' THEN @chej ELSE '' END)
PRINT @sql
EXEC (@sql);
END
GO


用动态SQL
wanggenhu0 2018-08-27
  • 打赏
  • 举报
回复
顶一顶,回复更快
wanggenhu0 2018-08-26
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[shouYeWuYuan]
(
@ywy nvarchar(50),
@sql nvarchar(500))
AS

begin
if( @ywy='' or @ywy is null)
begin

SELECT xiagsj as 定稿日期,kehuname as 客户
FROM chanpin a



where (a.tingzis!=1 or a.tingzis is null) AND kehuname =@sql


order by djsj desc
end
end
这样写就不会出错,但是我的@sql传入的是kehuname ='' and user='' 好几个查询

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧