2013-06-18 58 views
0

更新列我有一個表,如下所示 -用程序輸出

  Table1 
    Col1  Col2 Col3 
    1   a  NULL 
    2   b  NULL 
    3   c  NULL 

我有一個程序usp_calculateResult(Col1中,col2的)。

現在我想要的是用程序usp_calculateResult的輸出來更新Col3。 例如,如果我想用Col1的值更新Col3,那麼我們將執行:UPDATE Table1 SET Col3 = Col1。 我需要用過程輸出替換Col1。

我正在使用SQL Server 2005.請幫助。

注意:usp_calculateResult有兩個輸入參數和一個輸出參數。由於安全問題,我無法發佈該程序。

[編輯:加]

按照下面的討論中,我想我必須作出一個功能相同的程序。我沒有看到其他選擇。任何人都可以請評論這個?

+0

你真的需要爲每一行執行sp嗎?這聽起來可以改爲使用計算列。難道你不能混淆你的sp並告訴我們它做了什麼嗎?這樣我們就可以爲這個 – Lamak

+0

找出一個基於集合的解決方案而不是使用'output'參數,然後你必須在表格中保存回'Col3' ,爲什麼存儲過程只能設置'Col3'的值? –

+0

如果你重新定義了你的SP作爲一個函數,你可以稱它爲'UPDATE Table1 SET Col3 = usp_calculateResult(Col1,Col2)',但我同意這可能會變得過於昂貴 –

回答

0

從您的上下文中可以看出,您的proc只返回一個值,您應該將您的proc重新定義爲用戶定義的函數。然後你應該用這個來創建一個計算/計算列(這裏的例子中給出的簡單公式可以直接被你的函數取代)info這裏http://technet.microsoft.com/en-us/library/ms188300.aspx和這裏http://technet.microsoft.com/en-us/library/ms188300%28v=sql.90%29.aspx

這種方法將在2005,2008和2012

+0

我們無法真正做出專欄。任何選項都不能使拼接列或轉換程序正常工作。 – tik

+0

好像你沒有訪問原始代碼呢?在這種情況下,答案是否定的。如果情況並非如此,那麼提取代碼,創建一個udl,並在任何使用代碼的地方,用udf替換它並測試。它針對開發副本進行測試的目的是。 –