2017-03-13 52 views
0

我沒有很多年的代碼,我需要幫助,請。如何從功能或SPROC和/或動態SQL更新表格

我需要更新,其中發生的「出頭」的表,這就是爲什麼我需要 呼叫「功能/程序」在那裏我可以傳遞參數,其中「那些 事情」會發生。我知道......什麼亂七八糟的......有例如:

BEGIN 

UPDATE tab_or 
SET [1] = (CASE WHEN ([1] IS NULL) THEN @aux 
       WHEN ([1] NOT LIKE '%'[email protected]+'%') THEN CONCAT([1], ' | ', @aux) 
       ELSE [1] END) 
WHERE [2] = (SELECT [2] FROM tab_or WHERE row_id = @row); 

END; 

因爲這(和其他類似的說明會重複很多次)>我需要調用一個函數/程序「或其他類型的解決方案「我可以>給出2個參數(參數將是字段的名稱,在這種情況下[1]和[2])。

任何人都可以幫我編碼嗎?我堅持在我的工作中使用255000行......這些行不能跨越手邊...這就是我需要這個代碼的原因。

+0

更新只能在程序進行。函數處理並返回一個值,程序可以更新/刪除/插入等。 – xQbert

+0

對不起,我忘記了,我需要一個程序來執行那些指令,但是我可以給參數(字段名稱),如下所示:IF'something'then CALL XPTO(1,2) –

+0

確定xQbert,我明白......但是我怎樣才能創建這個程序,在那些指令(在BEGIN和END之間)運行的過程中,當我調用過程時,我可以給他2個參數?感謝您的時間 –

回答

0

嘗試把你的UpdateQuery爲VARCHAR,並使用EXEC(@UpdateQuery)

見樣本:

DECLARE @Test VARCHAR(8000) 
DECLARE @1 VARCHAR(50) 

SET @1 = 'Id' 
SET @Test = 'SELECT ' + @1 + ' FROM table WHERE LIKE ''%' + @param + '%''' 

EXEC (@Test)