我是SQL服務器中的新成員。我的要求是我必須從c#中取得數千條記錄作爲XML文件,並從該文件取得臨時表中的數據。從表中我必須檢查一個接一個的記錄,如果它存在,則更新else插入。所以我寫了一個存儲過程,但它給我下面的錯誤如何在存儲過程中使用循環sql server 2005
消息102,級別15,狀態1,過程 InsertIntoMyTable,13號線
錯誤 附近的語法「投」。
Msg 102,Level 15, State 1,Procedure InsertIntoMyTable, Line 18
'LOOP'附近的語法不正確。
Msg 156,Level 15,State 1,Procedure InsertIntoMyTable,Line 25
關鍵字'END'附近語法不正確。
存儲過程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsertIntoMyTable
@mytable xml
AS
BEGIN
SELECT
cast(colx.query('data(PointsliceId) ') as int) as PointSliceId,
cast(colx.query('data(Pt_timestamp) ') as datetime) as Point_timestamp
cast(colx.query('data(FloatValue) ') as float) as Float_Value
INTo #TMP FROM @mytable.nodes('DocumentElement/mytable') AS Tabx(Colx)
For IDX in (select * from TMP)
LOOP
if((select count(*) from PointValue_Float where PointSliceId=IDX.PointSliceId and Pt_timeStamp=IDX.Pt_timeStamp)>0)
update PointValue_Float set FloatValue=t.FloatValue from #TMP t where t.PointSliceId=PointValue_Float.PointSliceId and t.Pt_timeStamp=PointValue_Float.Pt_timeStamp
else
insert into PointValue_Float(PointSliceId,Pt_timeStamp,FloatValue) SELECT PointSliceId,Pt_timeStamp,FloatValue FROM #TMP
END LOOP
END
GO
- 我的表名是pointvalue_float這裏我要檢查數據是否存在與否,如果存在,則更新其他插入
呵呵,Fox Pro的`scan ... endscan`好日子!有時候我希望他們永遠不會過去。 – 2011-02-08 08:59:53