2017-04-24 15 views
-1

ストアドプロシージャを作成しようとしています。私のコードの短いバージョンは次のとおりです。ストアドプロシージャのパラメータからのテーブル名

CREATE PROCEDURE foobar 
    @table_name nvarchar(20), 
    @Work_Status nvarchar(20) 
AS 
BEGIN 
    update @table_name -- /// How Do I do this? /// 
    set work_status = @Work_Status 
END 

パラメータを使用してテーブル名を定義するにはどうすればよいですか?

+0

でなければならないあなたの問題を示すために必要なすべてのことのコードですか?いいえそうではありません。 –

+0

ユーザ定義のテーブルタイプを使用する値をそのストアドプロシージャにパラメータ –

+0

@juergendとして渡します。申し訳ありませんが、私は良い英語ではありません。 –

答えて

0

てみダイナミッククエリを使用するには:更新

DECLARE @SQL NVARCHAR(4000) 
DECLARE @ParamDefinition nvarchar(500) 
SET @ParamDefinition = N'@Work_Status nvarchar(20), @day_no nvarchar(10), @day_month nvarchar(10), @day_years nvarchar(10)'; 

--...CURSOR declaration 
--... BEGIN 
SELECT @SQL = 
N'update [SKTH_ENSUSER].[dbo].' + @tbl_name + ' 
       set t_work_status = @Work_Status 
       where t_day_no = @day_no and t_month_no = @day_month and t_year_no = @day_years' 
EXECUTE sp_executesql @SQL, @ParamDefinition, @Work_Status = @Work_Status, @day_no = @day_no, @day_month = @day_month, @day_years = @day_years 
--... 
--  FETCH NEXT FROM ENS_cursor 

:@SQLはNVARCHAR

+0

ありがとう、私は試してみます –

+0

プロシージャsp_executesql、行1 [バッチ開始行0] プロシージャは 'ntext/nchar/nvarchar'型の '@statement'パラメータを必要とします。 –

+0

エラーを修正しました –