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