0
我有一個平坦的表(所有列類型是varchar)在SQL服務器中包含200列,其中100列將有數值包括小數。我的要求是循環所有列,並檢查是否有任何列行包含字母數字或非數字值(例如100a0等)。SQL遊標循環未聲明變量
爲了實現上述情況下,在SQL我們有光標,幫助做循環,而是循環100列,我需要聲明100個變量和存儲像下面 值在SQL
CREATE PROCEDURE [dbo].[sp_check_value]
AS
Declare @col1 nvarchar(10),
@col2 nvarchar(10),
@col3 nvarchar(10),
.
.
.
@col100 nvarchar(10)
Declare mycursor cursor For
select c1,c2,c3...c100 from temp
OPEN mycursor
Fetch Next From mycursor Into @col1, @col2,@col3,...,col100
While @@Fetch_Status = 0 Begin
--some update statment
Fetch Next From mycursor Into @col1, @col2,@col3,...,col100
End -- End of Fetch
Close mycursor
Deallocate mycursor
但是,上在oracle的另一端我們有了遊標,但有一些更方便的方法來處理上面的情況。
在Oracle
create or replace procedure FooBar
as
cursor mydata is
select dog as d, cat as c, fish as f
from temp;
begin
for dr in mydata loop
UPDATE foo SET dogs = dr.d, cats = dr.c, fishes = dr.f;
end loop;
end;
因此,任何人可以幫助我實現SQL上述情況下沒有宣佈100個變量。
謝謝。
在解決遊標中的變量問題之前,首先確定是否需要遊標。你可能能夠以基於集合的方式做到這一點。 –
@FelixPamittan,只是爲了添加更多信息,DB表中的數據將從excel文件中填充,並且具有excel文件的行號。因此,如果任何列行具有非數字值,那麼我需要使用行號登錄表。我認爲,這裏需要循環。 – Prathyush
像你寫的那樣......你只是循環行......而不是列。你需要更新包含字母數字或非數字值的列嗎? – danvasiloiu