我正在嘗試創建一個存儲過程。以下是我的代碼的簡短版本:存儲過程中參數的表名
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
如何通過參數定義表名稱?
我正在嘗試創建一個存儲過程。以下是我的代碼的簡短版本:存儲過程中參數的表名
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
如何通過參數定義表名稱?
嘗試使用動態查詢:
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
謝謝,我會嘗試 –
過程sp_executesql,第1行[批處理開始行0] 過程期望類型爲'ntext/nchar/nvarchar'的參數'@statement'。 –
我修復了錯誤 –
是一切必要的代碼,以證明你的問題?不它不是。 –
使用用戶定義的表類型將值傳入該存儲過程作爲參數 – 2017-04-24 10:32:59
@juergend抱歉,我不是很好的英語。 –