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.
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
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.