0
DECLARE @H_TS MONEY
DECLARE @CLASS VARCHAR(50)='CLASS 04'   
DECLARE @TAB_NA VARCHAR(1000)='Classdata'
SET @SQL = 'SELECT @H_TS=SUM(CAST([HISTORY TOTAL$] AS MONEY)) FROM '+@TAB_NA+' WHERE SUBCLASS!=''TOTAL'' AND CLASS LIKE '+@CLASS+''
  EXECUTE SP_EXECUTESQL @SQL, N'@H_TS nvarchar(200) OUTPUT', @H_TS = @H_TS OUTPUT
PRINT @H_TS

エラーを下回っています

メッセージ 102、レベル 15、状態 1、行 1 '04' 付近の構文が正しくありません。

私の変数クラスにはスペースが含まれているため、クラス値を変更せずにこれを解決する方法はありますか (クラス内のスペースを削除しません)

4

2 に答える 2

0

LIKE クエリを実行しようとしており、% 演算子が必要であると仮定すると、これが探しているものになる可能性があります。

CREATE TABLE ClassData ([History Total$] int, SUBCLASS varchar(100), class varchar(100));

INSERT INTO ClassData VALUES (1, 'TOTAL', '1Class 04');
INSERT INTO ClassData VALUES (2, 'NOTTOTAL', '1Class 04 22');

DECLARE @H_TS MONEY
DECLARE @CLASS VARCHAR(50)='CLASS 04'   
DECLARE @TAB_NA VARCHAR(1000)='Classdata'
DECLARE @SQL NVARCHAR(MAX);

SET @SQL = 'SELECT @H_TS=SUM(CAST([HISTORY TOTAL$] AS MONEY)) FROM '+@TAB_NA+' WHERE SUBCLASS!=''TOTAL'' AND CLASS LIKE ''%' + @CLASS + '%''';

EXECUTE SP_EXECUTESQL @SQL, N'@H_TS nvarchar(200) OUTPUT', @H_TS = @H_TS OUTPUT
SELECT @H_TS

DROP TABLE ClassData

幸運を。

于 2013-01-28T14:44:34.897 に答える