SELECT
CASE WHEN @[$Project::CmdParam]='Full' THEN '20000101000100'
WHEN @[$Project::CmdParam]='Day-1' THEN (SELECT SUBSTRING(CONVERT(nvarchar(12),DATEADD("Day", -1, GETDATE()), 112),0,12)+''+'235000')
WHEN @[$Project::CmdParam]='Day-2' THEN (SELECT SUBSTRING(CONVERT(nvarchar(12),DATEADD("Day", -2, GETDATE()), 112),0,12)+''+'235000')
WHEN @[$Project::CmdParam]='Day-3' THEN (SELECT SUBSTRING(CONVERT(nvarchar(12),DATEADD("Day", -3, GETDATE()), 112),0,12)+''+'235000')
ELSE @[$Project::CmdParam]+'235000'
END
確保在Parameter Mapping
頁面匹配parameter name
爲@[$Project::CmdParam]
和CASE WHEN
完全相同作爲像上面。更重要的是,選擇Single Row
作爲reulst
,並選擇@[User::StartTime]
作爲存儲變量Result
頁
UPDATE
像尼克說,切換到ADO.Net
爲Connection Type
因爲你是使用SQL Server的工作,那麼你可以使用上面的映射方法,否則,您必須使用?
,在查詢中替換每個@[$Project::CmdParam]
,然後Parameter Name
作爲映射參數,在您的情況下,將0,1,2,3,4與結果保持相同映射。
月2日更新 如果使用ADO.net
現在,忘掉0-4的事情,Execute SQL Task
粘貼以下查詢到你的語句:
SELECT
CASE WHEN @a = 'Full' THEN '20000101000100'
WHEN @a = 'Day-1' THEN (SELECT SUBSTRING(CONVERT(nvarchar(12),DATEADD("Day", -1, GETDATE()), 112),0,12)+''+'235000')
WHEN @a = 'Day-2' THEN (SELECT SUBSTRING(CONVERT(nvarchar(12),DATEADD("Day", -2, GETDATE()), 112),0,12)+''+'235000')
WHEN @a = 'Day-3' THEN (SELECT SUBSTRING(CONVERT(nvarchar(12),DATEADD("Day", -3, GETDATE()), 112),0,12)+''+'235000')
ELSE @a + '235000'
END
粘貼後,選擇Single Row
作爲該Result set
然後轉到Parameter Mapping
頁面,選擇$Project::CmdParam
作爲Variable Name
,對於Parameter Name
鍵入@a
,它將在查詢中將您的包變量映射到@a。然後轉到Result Set
頁面,Add
新結果,Result Name
應該是0
,並選擇User::StartTime
作爲存儲查詢結果的變量。
經過以上所有步驟,這次應該會很好。
如果您使用的是SQL Task,參數的佔位符由驅動程序決定。你使用的是OLE DB還是ADO.Net? –
請忽略我的(現已刪除)評論。解決這個問題的唯一方法是刪除大部分代碼,並獲得一個非常基本的示例,並開始工作。此外,請確認您的連接是否爲OLEDB或ADO.Net –