我的SQL代码如下
ALTER procedure [dbo].[frdhdpekg] (@fwhere varchar(800))
as
--第一步建立一个临时表#re,如果已经存在,就删除,重新建
if object_id('tempdb.dbo.#fre') is not null
drop table #fre
CREATE TABLE #fre
(id int NULL,
cinvcode varchar(50) NULL,
intb float NULL,
free1 bit NULL,
free2 bit NULL,
free3 bit NULL, --是否批次管理
sta int NULL,--层次,一定要
pcinvcode varchar(50) NULL)--父编码
-- 第二步 定义一个变量
DECLARE @Level int
SET @Level = 1
--第三步,追加查询把订单资料追加到临时表
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'insert into #fre(a.id,a.cinvcode,a.intb,b.free1,b.free2,free3,pcinvcode,sta)
select b.ID,b.cinvcode,CASE WHEN f.free1=1 THEN b.intb*b.brdint/g.weight
ELSE b.intb*b.brdint END AS quantity,f.free1,f.free2,f.free3,'''',1
from frdrecord a left join frdrecordson b on a.stcode=b.stcode left join Dsale c on
b.stsa=c.socode left join Cmoctb d on b.brpid=d.tbid left join
Evendor e on a.stlea=e.CodeStr LEFT JOIN Ainventory f on b.cinvcode=f.cInvCode
LEFT JOIN Cbom g ON b.cinvcode=g.cinvcode
where @where' +' order by b.cinvcode '
--EXEC sp_executesql @sql
EXECUTE sp_executesql @sql, N'@where NVARCHAR(MAX)', @where = @fwhere out
后面的省略掉------
我执行语句如下
exec [frdhdpekg] @fwhere='a.date2 between ''2014-04-10'' and ''2014-05-11'' and b.cwhcode like ''%K%'''
老是提示如下错误
消息 4145,级别 15,状态 1,第 8 行
在应使用条件的上下文(在 'order' 附近)中指定了非布尔类型的表达式。
不知道如何修正我的错误,急死人了,请大家帮忙,非常感谢.
料青山看我应如是
倚天杖
慕斯709654
蛊毒传说
米脂
拉丁的传说
慕姐8265434
慕慕森
相关分类