variable assignment is not allowed in a cursor declaration.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
bilbeyi
Üye
Mesajlar: 104
Kayıt: 24 Kas 2004 10:48
Konum: ist

variable assignment is not allowed in a cursor declaration.

Mesaj gönderen bilbeyi »

Arkadaşlar merhaba.
SQl server üzerinde procedure yazarken bir hata alıyorum.
aldığım hata :
variable assignment is not allowed in a cursor declaration.

////////////////////////////////////////////////////////////////////////////////////
Declare @nId numeric(18,0)
DECLARE @@kod VARCHAR (18)
DECLARE @@AcentaTipi VARCHAR (7)
DECLARE @@AcentaKodu VARCHAR (50)
DECLARE @@MCO VARCHAR (6)
DECLARE @@HatTipi VARCHAR (6)
DECLARE @@Tarih DATETIME
DECLARE @@Teminat NUMERIC (18,4)
DECLARE @@Sirket VARCHAR (50)
DECLARE @@sube VARCHAR (50)
DECLARE @@departman VARCHAR (50)
DECLARE @@kayitgiren VARCHAR (50)
DECLARE @@yetkisi NUMERIC(12,0)
DECLARE @@kayittarihi DateTime
DECLARE @@HavaYoluKodu VARCHAR (3)
DECLARE @@depertman VARCHAR(50)
DECLARE @@yolcuadi VARCHAR(50)
DECLARE @@aciklama varchar(100)
DECLARE kayitlar cursor

for
select @@kod=biletno,@@mco=mco,@@havayolukodu=havayolukodu,@@hattipi=hattipi,@@sirket=sirket,
@@sube=sube,@@depertman=departman,@@yetkisi=yetkisi,@@teminat=teminat,@@acentakodu=acentakodu,@@acentatipi=acentatipi,@@yolcuadi=yolcuadi,
@@aciklama=(parkur0 + parkur1 + parkur2+ parkur3+ parkur4) from biletislem
where biletno not in (select kod from stokkodlari where biletislem.sirket = stokkodlari.sirket
and biletislem.sube=stokkodlari.sube )
open kayitlar

while @@fetch_status = 0
begin

EXECUTE sp_GetSequenceNo 'stokkodlari', @nId OUTPUT
Insert into stokkodlari (Id, kod, mco, havayolu, islem, sirket, sube, departman,yetkisi,teminat,acentakodu,acentatipi,ek1,aciklama) Values(
@nId,@@kod,@@mco,@@havayolukodu,@@hattipi,@@sirket,@@sube,@@depertman,@@yetkisi,@@teminat,@@acentakodu,@@acentatipi,@@yolcuadi,@@aciklama)

fetch next from kayitlar
into @@kod
end
close kayitlar
deallocate kayitlar
///////////////////////////////////////////////////////////////////////////////////
Tahminimce sorun select ifadesindeki kolon değerlerini alırken oluyor.
Burada yapmak istediğim selecet ifadesinden dönen kayıtları farklı bir tabloya yazmaktır.
Yardımlarınızı bekliyorum
bilbeyi
Üye
Mesajlar: 104
Kayıt: 24 Kas 2004 10:48
Konum: ist

Mesaj gönderen bilbeyi »

Arkadaşlar değişken tanımlamada sorun varmış Doğrusu bu şekilde olacakmış. Ancak şimdi ki sorunumda ben hem select ifadesinden hemde diğer bir procedure den değer alıyorum. procedureden gelen değeeri nasıl alcağım şimdi onu bilmiyorum. into @nId satırını açınca yani alt alta birden fazla şnto gelince hata veriyor.
/////////////////////////////////////////////////////////////////////////////////

Declare @nId numeric(18,0)
DECLARE @kod VARCHAR (18)
DECLARE @AcentaTipi VARCHAR (7)
DECLARE @AcentaKodu VARCHAR (50)
DECLARE @MCO VARCHAR (6)
DECLARE @HatTipi VARCHAR (6)
DECLARE @Teminat NUMERIC (18,4)
DECLARE @Sirket VARCHAR (50)
DECLARE @sube VARCHAR (50)
DECLARE @departman VARCHAR (50)
DECLARE @kayitgiren VARCHAR (50)
DECLARE @yetkisi NUMERIC(12,0)
DECLARE @kayittarihi DateTime
DECLARE @HavaYoluKodu VARCHAR (3)
DECLARE @depertman VARCHAR(50)
DECLARE @yolcuadi VARCHAR(50)
DECLARE @aciklama varchar(100)
DECLARE kayitlar cursor
for
select biletno,mco,havayolukodu,hattipi,sirket,sube,departman,yetkisi,teminat,acentakodu,
acentatipi,yolcuadi,parkur0 + parkur1 + parkur2+ parkur3+ parkur4 from biletislem
where biletno not in (select kod from stokkodlari where biletislem.sirket = stokkodlari.sirket
and biletislem.sube=stokkodlari.sube )
open kayitlar
Fetch next from kayitlar
into @kod,@MCO,@havayolukodu,@HatTipi,@Sirket,@sube,@departman,@yetkisi,@Teminat,@AcentaKodu,@AcentaTipi,@yolcuadi,@aciklama
while @@fetch_status = 0
begin

EXECUTE sp_GetSequenceNo 'stokkodlari', @nId OUTPUT
--into @nId
Insert into stokkodlari (Id, kod, mco, havayolu, islem, sirket, sube, departman,yetkisi,teminat,acentakodu,acentatipi,ek1,aciklama) Values(
@nId,@kod,@mco,@havayolukodu,@hattipi,@sirket,@sube,@departman,@yetkisi,@teminat,@acentakodu,@acentatipi,@yolcuadi,@aciklama)

fetch next from kayitlar
--into @nId
into @kod,@MCO,@havayolukodu,@HatTipi,@Sirket,@sube,@departman,@yetkisi,@Teminat,@AcentaKodu,@AcentaTipi,@yolcuadi,@aciklama
end
close kayitlar
deallocate kayitlar

/////////////////////////////////////////////////////////////////////////////////
Cevapla