Tablo 1 deki tüm kolonlar not null olarak ayarlanmış ve tüm satırlardaki bilgiler dolu.
Yapmak istediğim bir SP yazarak bu SP'ye dışarıdan sadece masa
değerini vermek suretiyle tablo 1 deki masa değeri aynı olan tüm kayıtları tablo 2 ye kaydetmek.
Denemelerimde bir türlü başarılı olamadım konu hakkında yardımcı olabilecek var mı?
En son kahraman1285 tarafından 07 Eki 2007 11:01 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
aşağıdaki gibi iki tablom var ve bir Sp yazarak siparis tablosundaki adi ve fiyat kolonlarını nasıl doldurablirim.
Yazdığım sp hata vermiyor fakat çalışmıyorda Nerde hata yaptım fikri olan var mı?
USE [Restoran]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[yemekadi]
AS
declare @sayac int
declare @sonkod int
declare @yemekismi varchar(15)
declare @fiyati float
set @sayac=1
set @sonkod=(SELECT MAX(kod) FROM dbo.siparis)
while (@sayac=@sonkod)
begin
--set @yemekismi=null
--set @fiyati=null
set @yemekismi=(select adi from dbo.yemekler where kod=@sayac)
set @fiyati=(select fiyat from dbo.yemekler where kod=@sayac)
update dbo.siparis
set adi=@yemekismi
where kod=@sayac
set @sayac=@sayac+1
end
Bir cursor tanımla ve bu cursorun içinde Tablo1 inden masa ya göre kısıt vererek sorgulama yaptır(tabiki masa kısıtı için dışardan gelen bir değişken tanımlamalısın). Tablo2 ye yazacağın alanları Tablo1 den seçerek tanımlayacağın değişkenlere atamalısın. Bir döngü oluşturup bu döngü içinde Tablo2 ye gerekli alanları atayarak kayıt işlemini yapabilirsin. Cursor tanımlama ile ilgili örneği sql serverın helpinden veya şu linkte bulabilirsin:
(bu mesajda fahretin abinin sybase için örnekleri mevcut, ben silme triggerı için örnek bir kod vermiştim aynı konu altında,onun içinde cursor kullanımı var )
2. yazdığın mesajda da ne sormak istediğini anlamadım
USE [Restoran]
GO
/****** Object: StoredProcedure [dbo].[yemekadi] Script Date: 10/06/2007 10:56:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[yemekadi]
AS
declare @sayac int
declare @sonkod int
declare @yemekismi varchar(15)
declare @fiyati float
set @sayac=1
set @sonkod=(SELECT MAX(kod) FROM dbo.siparis)
while not (@sayac > @sonkod)
begin
set @yemekismi=null
set @fiyati=null
set @yemekismi=(select adi from dbo.yemekler where kod=@sayac)
set @fiyati=(select fiyat from dbo.yemekler where kod=@sayac)
update siparis
set adi=@yemekismi,fiyat=@fiyati
where kod=@sayac
set @sayac=@sayac+1
end