拼接sql语句的问题

[复制链接]
查看11 | 回复3 | 2008-5-31 01:02:30 | 显示全部楼层 |阅读模式
下面这段sql代码,在多个线路的条件下无法查询得到想要的结果。
DECLARE @CircuitIDs AS VARCHAR(200)
DECLARE @STRSQL AS VARCHAR(500)
SET @CircuitIDs= 'BEJBEJ(CNC)LK00001,SHZ(CT)IA00509'--2条线路编号
SET @STRSQL ='SELECT DISTINCT * FROM

(SELECT CusID,CctName FROM T_IAPNCircuit WHERE CctName IN('''+ @CircuitIDs +''')

UNION ALL

SELECT CusID,LKName FROM T_LKInfo WHERE LKName IN('''+ @CircuitIDs +''')) AS Temp';
EXEC(@STRSQL );
select @STRSQL的时候发现,sql语句使这样的:SELECT DISTINCT * FROM (SELECT CusID,CctName FROM T_IAPNCircuit WHERE CctName IN('BEJBEJ(CNC)LK00001,SHZ(CT)IA00509')
UNION ALLSELECT CusID,LKName FROM T_LKInfo WHERE LKName IN('BEJBEJ(CNC)LK00001,SHZ(CT)IA00509')) AS Temp
很明显,上面sql语句括号内不是('BEJBEJ(CNC)LK00001','SHZ(CT)IA00509')这样的形式,请问这样才能变成这样形式的呢?
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
附上存储过程吧。上面是调试用的sql。
ALTER PROCEDURE [dbo].[P_RPOUMW_Sel_CusIDByCircuitIDs]

-- Add the parameters for the stored procedure here
(

@CircuitIDs AS VARCHAR(200)
)

AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

-- SET NOCOUNT ON;
-- Insert statements for procedure here

BEGIN TRY

DECLARE @sql AS VARCHAR(500)

SET @sql='SELECT DISTINCT * FROM

(SELECT CusID,CctName FROM T_IAPNCircuit WHERE CctName IN('''+ @CircuitIDs +''')

UNION ALL

SELECT CusID,LKName FROM T_LKInfo WHERE LKName IN('''+ @CircuitIDs +''')) AS Temp';

EXEC(@sql);

END TRY

BEGIN CATCH

DECLARE @ErrMsg varchar(50)

SET@ErrMsg ='APPEND Error!'

RAISERROR(@ErrMsg, 14, 1)

END CATCH
END
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
从变量@CircuitIDs的形式入手:
DECLARE @CircuitIDs AS VARCHAR(200)
DECLARE @STRSQL AS VARCHAR(500)
SET @CircuitIDs= '''BEJBEJ(CNC)LK00001'',''SHZ(CT)IA00509'''--2条线路编号
SET @STRSQL ='SELECT DISTINCT * FROM

(SELECT CusID,CctName FROM T_IAPNCircuit WHERE CctName IN('+ @CircuitIDs +')

UNION ALL

SELECT CusID,LKName FROM T_LKInfo WHERE LKName IN('+ @CircuitIDs +')) AS Temp';
exec(@STRSQL)
go
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行