Memory table

Oracle veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 12:50
Konum: Ankara

Memory table

Mesaj gönderen ademcicek » 13 Eki 2006 09:19

herkese merhaba.arkadaşlar sql server de stored procedure içerisinde sanal table oluşturabiliyorduk.oracle de bunu nasıl yaparız.sql serverde bir örnek göndereyim.

Kod: Tümünü seç

CREATE PROCEDURE dbo.SqldeTableKullanımıylailgiliornek
@IhaleID int
AS
BEGIN
  /* Bu Procedure de Kesinleşen İhale Tutarında bloke tutarlarını güncellemek için */

   
 declare @YeniTable TABLE  (HarcamaKalem varchar(16),Fiyat decimal(18,2)); --Yeni Tablo Oluşturuluyor
 declare @HarcamaKalem varchar(16);
 declare @Fiyat decimal(18,2);
 DECLARE HarcamaKalem_Cursor CURSOR FOR
  select HarcamaKalem,NetTutar as Fiyat from  vwIhtiyacListesi where MasterID=
(Select UID from IHLSiparis where IhaleID=@IhaleID) and Tur=5 and HarcamaKalem is not null and HarcamaKalem<>''
  OPEN HarcamaKalem_Cursor;
  FETCH NEXT FROM HarcamaKalem_Cursor
  into @HarcamaKalem,@Fiyat;

  WHILE @@FETCH_STATUS = 0
   BEGIN
  if (Select Count(*) from @YeniTable where HarcamaKalem=@HarcamaKalem)=0 --Kayır Varmı Kontrolu
   insert into @YeniTable (HarcamaKalem,Fiyat) values (@HarcamaKalem,@Fiyat) --Yoksa Ekle
else
   update @YeniTable set Fiyat=(Fiyat+@Fiyat) where HarcamaKalem=@HarcamaKalem --Varsa Güncelle
   FETCH NEXT FROM HarcamaKalem_Cursor
   into @HarcamaKalem,@Fiyat; 	
     PRINT @Fiyat
   END;
   CLOSE HarcamaKalem_Cursor
   DEALLOCATE HarcamaKalem_Cursor
   select * from @YeniTable
   select i.ComBirimID,b.FinansTipi from IHLIhale i
   left join IHLIhaleButce b on b.IhaleID=i.UID
   where i.UID=@IhaleID
 
END
şimdiden teşekürler.

ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 12:50
Konum: Ankara

Mesaj gönderen ademcicek » 14 Eki 2006 09:49

herkese merhaba.şöyle bir örnek buldum ama.bir türlü test edemedim.çalışmadı.

Kod: Tümünü seç

 DECLARE 
   TYPE MyTrip_table_type IS TABLE OF 
        business_trips.bt_cost%ROWTYPE INDEX BY BINARY INTEGER; 
   myTrips MyTrip_table_type; 
   BEGIN 
      myTrips(1).job := 'Test Job'; 
      UPDATE business_trips 
      SET bt_cost = bt_cost * 1.2 
      WHERE bt_id_pk = myTrips(1) 
   END 
oluşan hata :
ORA-06550: satır 3, sütun 56:
PLS-00103: "INTEGER" sembolü ile karşılaşıldı, şunlardan biri bekleniyordu:

( ; not null range alter character large
Sembol "rangedevam etmek için """, ""INTEGER"" olarak değiştirildi.
"
ORA-06550: satır 10, sütun 4:
PLS-00103: "END" sembolü ile karşılaşıldı, şunlardan biri bekleniyordu:

. ( * % & - + ; / at mod remainder rem return returning
<üstel (**)> and or || multiset
nerede hata yapıyor olabilirim arkadaşlar.şimdiden teşekürler.

Mennan
Üye
Mesajlar: 144
Kayıt: 22 Haz 2004 02:22
Konum: Istanbul
İletişim:

Mesaj gönderen Mennan » 16 Eki 2006 04:24

Yapmaya çalıştığınız işlemi tam olarak belirtebilir misiniz?PL/SQL içinde dizi kullanarak ne yapmaya çalışıyorsunuz?

Cevapla