Forum

Sql İki Store Proce...
 
Bildirimler
Hepsini Temizle

Sql İki Store Procedure Bir Value

2 Yazılar
2 Üyeler
0 Reactions
1,399 Görüntüleme
(@ArdaKeskiner)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

Herkese Merhaba

Bir konuda düşüncelerinize ihtiyacım var.

Site: .aspx

Konu:

Sql üzerinde 2 tablo var biri firma ikincisi firma hizmetleri

Firma tablosuna islem strore procedurü üzerinden işlem yaptırtıyorum (insert - update - delete)

Aynı şekilde firma hizmet tablosuda islem procedure üzerinden işlem yaptırıyorum.

.aspx sayfaları class üzerinden veri gönderme ve alma işlemi yapıyor.

.aspx sayfası işlem.aspx olarak hem insert hem update olarak işlem yapıyor.

 

Firma tablosuna insert işlemi sırasında girilen kayıdın id sini alıyorum scope_Identity ile firma_islem procedure içinde  firma hzmt tablosuna insert işlemi yapıyorum.

birinci yol

firma_islem store procedure;

if(@knt=0 and @islem=1) begin
insert into firma (f_isim,f_yetkili,f_durum,f_kyttrh,f_gncltrh,f_sirano,f_adres,f_tlfn1,f_vergidaire,f_vergino,f_adresftr) values (@isim,@yetkili,@drm,@kytrh,@gncltrh,@sirano,@adres,@tlfn1,@vergidaire,@vergino,@adresft);
set @islem=SCOPE_IDENTITY()

insert into frmhzmt (f_id,sms_hzmt,mail_hzmt,teknik_hzmt,site_hzmt) values (@islem,@sms,@mail,@teknik,@site);end;

Bu yolla ile girişlerde sıkıntı olmuyor. işlemi yapıyor.

ikinci yol: 

firma_islem procedure işlem yaptıktan sonra bana Id değerini döndürsün ve aspx code behind tarafında firma_hzmt classına bu değeri vereyim ve insert işlemini firma_islem içinden çıkartıp frmhzmt_islem procedure içinde yapsın.

Bu yolla ile girişlerde sıkıntı olmuyor. işlemi yapıyor.

Fakat server tarafına çok gidip geliyor veri aldı sonra veri verdi.

---------------------------------------------------------------

 firma firmag = new firma();
        firmag.fid = f_id.text;
        firmag.kytrh = f_kytrh.text;
        firmag.gncltrh = f_gncltrh.text;
        firmag.sirano = f_sirano.text;
        firmag.durum = f_durum.value;
        firmag.isim = f_isim.text;
        firmag.yetkili = f_yetkili.text;
        firmag.adres = f_adres.text;
        firmag.tlfn1 = f_tlfn.text;
        firmag.vergino = Convert.ToInt32(f_vergino.text);
        firmag.vergidaire = f_vergidaire.text;
        firmag.adresftr = f_adresftr.text;

        if (Session["knt"].ToString() != "0")
        {
            if (firmag.fid == 0)
            {
                firma_hzmt fhzmtg = new firma_hzmt();
                fhzmtg.fid = firmag.islem(1, firmag);
                fhzmtg.smsh = c_smsh.vl;
                fhzmtg.mailh = c_mailh.vl;
                fhzmtg.siteh = c_siteh.vl;
                fhzmtg.teknikh = c_teknikh.vl;
                fhzmtg.islem(1, fhzmtg);
                srno();
            }
            else
            {
                firmag.islem(2, firmag);
            }
        }

------------------------

Problem başlangıç :

Sonradan verileri ayrı ayrı yollamak ve bunu store procedure (server) üzerinde birleştirmek geldi aklıma

aspx tarafında 11 değer firma girişi için + firma hzmet için 5 değer var toplamda 16 değer gönderiyorum.(Gerçi çok uzun ve fazla değer göndermiyorum fakat bu konuyu bir projede kullanacağım)

Birinci aşama

firma_islem içinde firma hizmete ait değişkenleri kaldırıdım.

firma ile bilgileri insert ettim  firma adı = firma_adi

insert işlemi sonrası firma_id scope Identity ile aldım firma_id = 1 ok

 

ikinci aşama

firma_islem içinde firma hizmete ait değişkenleri kaldırdığım değişkenleri firma_hzmt_işlem procedure içine yazdım.

firma_işlem de oluşan id değerini firma_hzmt procedurene gönderemedim firma_hzmt_islem procedure id haricinde iki değer daha alıyor.

firma_hzmt procedure için firma_id -- hizmet1 -- hizmet2 değerlerini birleştirip vermek istiyorum.

----------------------------------------------

ALTER proc [dbo].[sp_firma_hzmt_islem]
@idfrm int, (firma_islem den gelen id değeri olmasını istiyorum)
@sms tinyint, 
@mail tinyint,
@teknik tinyint,
@site tinyint,
@islem tinyint
as
begin
if (@islem=1)begin
insert into frmhzmt (f_id,sms_hzmt,mail_hzmt,teknik_hzmt,site_hzmt) values (@idfrm,@sms,@mail,@teknik,@site);end;

 

dedikten sonra ortalık çin pazarına döndü.

Kısaca

if(@knt=0 and @islem=1) begin
insert into firma (f_isim,f_yetkili,f_durum,f_kyttrh,f_gncltrh,f_sirano,f_adres,f_tlfn1,f_vergidaire,f_vergino,f_adresftr) values (@isim,@yetkili,@drm,@kytrh,@gncltrh,@sirano,@adres,@tlfn1,@vergidaire,@vergino,@adresft);
set @islem=SCOPE_IDENTITY()

return @islem + frmhzt için gönderdiğim değerleri server tarafında birleştirip procedure çalıştırmak istiyorum.

 

Not: Aklım sağlığım yerinde hala ismimi hatırlıyorum :)))

 
Gönderildi : 10/12/2016 14:59

(@eravse)
Gönderiler: 1753
Üye
 

hocam selam

 

okudum ama bızım akıl saglıgımız yerındemı onu sorgulamak lazım netıcede sunu anladım sen bır bırlesımı return etmek ıstıyorsun zannedersem

 

Declare returnedValue VARCHAR();

 

SET returnedValue = Concat(@islem,' ',frmhzt);

 

return returnedValue ;

 

seklınde bir değişkene set ederek ıkısını bırlestırıp donebılırsın . Eğer donmek ıstedıgın rakamları SUM almak ıstıyorsan once toplama ıslemı vs yaptırman gereklı ınsallah dogru anladım 🙂

 

saygılar

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 22/12/2016 14:39

Paylaş: