2013-04-29 89 views
0

多年來,Oracle PL/SQL的特點是用一個非常快速的簡單方法代碼從遊標中獲取數據。對於一個簡單的光標,如:SQL Server是否簡化了與Oracle相媲美的遊標記錄提取?

CURSOR emp_cur IS SELECT * FROM EMPLOYEE; 

COLUMNNAMES是自動獲取,而不明確地命名他們

FOR record IN emp_cur LOOP 
dbms_output.put_line('its ' || record.columnname); 
END LOOP; 

但這一切我已經在SQL Server中,需要在fetch語句明確列,以及其他繁瑣的樣板代碼如檢查@@ FETCH_STATUS等

SQL Server 2012是否提供了與Oracle簡單技術相媲美的東西?

+1

如果您希望將sql右放入FOR構造中,可以進一步簡化它。 – OldProgrammer 2013-04-29 23:20:53

+0

我知道了,你在折磨我!因爲Oracle非常棒,所以我希望我可以在SQL SERVER中輕鬆編寫代碼,現在是強制要求。 – draca 2013-04-30 14:23:29

回答

0

截至2013年4月30日,最新版本的SQL Server爲2012年,Oracle沒有這種「語法等同」功能。無論好還是壞都需要辯論。你所說的等價物看起來並不那麼困難,所以我不確定抱怨是什麼。

declare @name varchar(10); 
declare emp_cur cursor LOCAL STATIC FORWARD_ONLY for 
    select name from employee; 
open emp_cur; 
fetch next from emp_cur into @name; 
while @@FETCH_STATUS = 0 begin 
    PRINT 'its ' + @name; 
    fetch next from emp_cur into @name; 
end;