Set @FSQL=AND (字段2='0014') AND (字段3 in ('A001','D001')) EXEC ABC 20090316,20090415,AND (字段2='0014') AND (字段3 in ('A001','D001')) 为什么都不加引号呢,这样能执行?
CREATE PROCEDURE ABC @QYMD char(8), @ZYMD char(8), @FSQL Nvarchar(4000) AS EXEC( 'SELECT * FROM 表 WHERE 字段1 BETWEEN '+ @QYMD+' AND '+@ZYMD+ @FSQL) GO Declare @QYMD char(8), @ZYMD char(8), @FSQL varchar(4000) Set @QYMD=20090316 Set @ZYMD=20090415 Set @FSQL='AND (字段2=''0014'') AND (字段3 in (''A001'',''D001''))' EXEC ABC @QYMD,@ZYMD,@FSQL
事实上我是想写程序来执行这段SQL,所以条件是变化的
--这样。 CREATE PROCEDURE ABC @QYMD char(8),@ZYMD char(8),@FSQL Nvarchar(4000) AS declare @sql nvarchar(4000) set @sql='SELECT * FROM 表 WHERE (字段1 BETWEEN '''+@QYMD+''' AND '''+@ZYMD+''')' + @FSQL exec (@sql) GO EXEC ABC '20090316','20090415','AND (字段2=''0014'') AND (字段3 in (''A001'',''D001''))'
EXEC ABC 20090316,20090415,AND (字段2='0014') AND (字段3 in ('A001','D001')) 为什么都不加引号呢,这样能执行?
@QYMD char(8),
@ZYMD char(8),
@FSQL Nvarchar(4000)
AS
EXEC( 'SELECT *
FROM 表
WHERE 字段1 BETWEEN '+ @QYMD+' AND '+@ZYMD+ @FSQL)
GO
Declare @QYMD char(8), @ZYMD char(8), @FSQL varchar(4000)
Set @QYMD=20090316
Set @ZYMD=20090415
Set @FSQL='AND (字段2=''0014'') AND (字段3 in (''A001'',''D001''))'
EXEC ABC @QYMD,@ZYMD,@FSQL
CREATE PROCEDURE ABC @QYMD char(8),@ZYMD char(8),@FSQL Nvarchar(4000) AS
declare @sql nvarchar(4000)
set @sql='SELECT * FROM 表 WHERE (字段1 BETWEEN '''+@QYMD+''' AND '''+@ZYMD+''')' + @FSQL
exec (@sql)
GO
EXEC ABC '20090316','20090415','AND (字段2=''0014'') AND (字段3 in (''A001'',''D001''))'