我想寫一個t-sql存儲過程(aka sproc),它從'MyTable'中選擇3列。另外,我想更新同一個sproc中的表格:tsql:「更新」之前是否可以「返回select」?
- 我從表中選擇第三個值。
- 如果它等於「真」,我想更新表中的「假」
我不知道我應該用什麼語法的相關記錄。你能幫我嗎?
ALTER procedure [dbo].[My_PROC]
@ID varchar(10)
AS
BEGIN
declare @Col3 bit;
set @Col3 = select Col3
from dbo.MyTable with (nolock)
where @ID = ID
if @Col3 = 'true'
update dbo.dbo.MyTable set col3 = 'false'
where @ID = ID
select Col1,
Col2,
Col3
from dbo.MyTable table with (nolock) where @ID = ID,
table.Col1,
table.Col2,
@Col3
END
編輯:我想返回原來COL3(未更新值)。
「user-procedure(aka usp)」不是通用的術語 - 存儲過程(AKA「sprocs」)通常在用戶和系統之間並沒有區別。系統擁有的sprocs存在,但由於您無法更改它們,所以這個區別是沒有意義的。 –