0

特定の行の列の値を取得しようとしていますが、次のエラーが発生します。何が問題なのかわかりません。これが私のSQLクエリです:

declare @Service_Table varchar(30),
        @Ser_Id tinyint,
        @sql  nvarchar(100), 
        @Service_State tinyint

SET @Service_Table='Third_Party_Assistance'
set @Ser_Id = 2
SET @sql = 'SELECT ' + @Service_State + '=  Service_State_Id FROM dbo.' + 
          quotename(@Service_Table) + ' WHERE Service_Id = ' + 
          convert(varchar,@Ser_Id) + 'AND Service_State_Id <> 4'
EXEC sp_executesql @sql
4

3 に答える 3

1

@Service_State変数に値を割り当てていません!!

于 2013-03-25T08:58:22.850 に答える
1

OUTPUTパラメータでsp_executesqlシステムストアドプロシージャを使用します

declare @Service_Table varchar(30),
        @Ser_Id tinyint,
        @sql  nvarchar(4000), 
        @Service_State tinyint

SET @Service_Table='Third_Party_Assistance'
SET @Ser_Id = 2
SET @sql = 'SELECT @Service_State =  Service_State_Id FROM dbo.' + 
            quotename(@Service_Table) + ' WHERE Service_Id = ' +
            '@Ser_Id AND Service_State_Id <> 4'
EXEC sp_executesql @sql, N'@Ser_Id tinyint, @Service_State tinyint OUTPUT', @Ser_Id, @Service_State OUTPUT
SELECT @Service_State
于 2013-03-25T09:22:36.557 に答える
0

あなたはすでにこの質問をしていませんか?宣言はどこにありますか?

@Service_Stateをキャストしてみてください:cast(@Service_State) as varchar(255))

declare @Service_Table varchar(30),
        @Ser_Id tinyint,
        @sql  nvarchar(30), 
        @Service_State tinyint

SET @Service_Table='Third_Party_Assistance'
set @Ser_Id = 2
SET @sql = 'SELECT ' + cast(@Service_State as varchar(255))+ '=  Service_State_Id FROM dbo.' + 
          quotename(@Service_Table) + ' WHERE Service_Id = ' + 
          convert(varchar,@Ser_Id) + 'AND Service_State_Id <> 4)'
于 2013-03-25T08:54:56.260 に答える