[SORU]-MySQL SP Değişkenler Hk

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

[SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

S.A. arkadaşlar,

MySQL 5.

SP ile iki veya daha fazla table dan verileri çekip farklı değişkenlere nasıl aktarabilirim ?

Acaba basit bir örnek verebilecek bir arkadaş varmı acaba ?

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen vkamadan »

Merhaba ,
Yapmak istediğiniz şeyi basit bir şekilde kurgulandırabilirmisiniz ?
Örneğin bir SELECT ifadesi sonucunda gelen tüm kayıtlar içinde dolaşıp ..... işlemleri yapmak istiyorum gibi.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

vkamadan yazdı:Merhaba ,
Yapmak istediğiniz şeyi basit bir şekilde kurgulandırabilirmisiniz ?
Örneğin bir SELECT ifadesi sonucunda gelen tüm kayıtlar içinde dolaşıp ..... işlemleri yapmak istiyorum gibi.
S.A.

Hocam, A Table dan istediğim gibi verileri çektim. Çektiğim bu verileri başka bir Table olan B ile bazı şeyleri kontrol
edip eğer istediğim sonuç doğru ise o kaydı getirmek istiyorum. (Çoklu satır olacak- Cari Ekstre gibi ) .

Bu arada hocam bütün raporları SP ile hazırlatıyorum ve çekiyorum !!! Bu işlem daha hızlı ve güvenlidir değil mi?
Proje uzak bağlantı (İnternet) üzerinden çalışacak !
Ana sistem ne özelliklerde olmalı ? En az kaç GB internet bağlantı hızı gerekli ?


Sevgiler, Saygılar

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen vkamadan »

Merhaba ,
Çekilen veriseti üzerinde gezinme işlemini CURSOR yardımı ile yapabilirsiniz örneğin ;

Kod: Tümünü seç

CREATE PROCEDURE `sp_hareket_test` 
(
  IN  `hes_kod_in`    varchar(20)
)
BEGIN 
 
      DECLARE bitti INT DEFAULT 0;

      DECLARE TL DECIMAL(13,2);
      DECLARE DVZ DECIMAL(13,2);
      DECLARE ACIKLAMA VARCHAR(20);      
            
      DECLARE KAYIT CURSOR FOR  SELECT tl_tutar , dvz_tutar , aciklama FROM hareket where hesap_kodu=hes_kod_in;      
      DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET bitti = 1;
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET bitti = 1;       
      
      OPEN KAYIT;
      
        
 WHILE NOT bitti DO 
     FETCH KAYIT INTO TL,DVZ,ACIKLAMA;
          
     IF NOT bitti THEN
      BEGIN
         // Burada KAYIT isimli cursor'ün her satırı için gerekli karşılaştırma işlemlerini yapabilirsiniz
      END IF;
  END WHILE; 
  CLOSE KAYIT;
    
END|

DELIMITER ;


Yukarıdaki örneği istediğiniz gibi düzenleyin , bence CREATE TEMPORARY TABLE deyimiyle geçici tablo oluşturun cursor içinde uygun kayıtları bu tabloya insert edin ve prosedürün en sonunda bu geçici tabloyu select edin.

Uzaktan kullanımlarda veri nekadar az gelip giderse performans okadar artar bu durumda yükü stored rutinlerle Vt tarafına yıkmak en mantıklısı olacaktır,
ram ve bant genişliği olayı tamamen uygulamanıza bağlı, örneğin bizim yaptığımız bir çalışmada 35 kullanıcının yoğun olarak raporlar alıp veri girdiği bir sistem için HP nin 8 GB ramli 4 çekirdekli işlemcili modelini kullanmıştık, my.ini yi çok iyi ve bilinçli bir şekilde ayarlamak olayın en önemli adımıdır.

Umarım fikir verici olmuştur iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

S.A.

Paylaşımlarınız için çok teşekkür ederim.

Şöyle bir sorun yaşıyorum !

Kod: Tümünü seç

CREATE DEFINER = 'root'@'localhost' PROCEDURE `cari_hesap_ekstresi` 
(
  IN  KOD1               varchar(20),
  IN  KOD2               varchar(20),
  IN  TARIH1             date,
  IN  TARIH2             date,
  IN  FIRMA_BAGLANTI_ID  int
)
BEGIN
  SELECT *FROM DENEME
  WHERE (DENEME.FIRMA_BAGLANTI_KODU = FIRMA_BAGLANTI_ID) AND
        (DENEME.MUSTERI_KODU BETWEEN KOD1 AND KOD2) AND
        (DENEME.TARIH BETWEEN TARIH1 AND TARIH2)
  ORDER BY MUSTERI_KODU, TARIH;  
END|

Yukarıdaki SP yi çalıştırdığımda
aşağıdaki hatayı veriyor. Bunun sebebi nedir?
İnanın çözemedim !

Kod: Tümünü seç

SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.2009, 24.07.2009, 1)' at line 1
Neden veriyor böyle bir hatayı !

Sevgiler, Saygılar.

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen vkamadan »

merhaba ,
Sorun SP ye geçtiğiniz tarih parametreleriyle ilgili gibi duruyor ,
çalıştırdığınız bileşene tarih parametrelerini AsDate olarak göndermeyi deneyin, yada kendiniz elle string olarak geçiyorsanız formak varsayılan YYYY-AA-GG şeklinde olmalıdır.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

S.A.

SQL Maestro ile çalışıyorum. hazırladığım SP yi kendi üzerinde çalıştır dediğimde
otomatik parametre ekranı geliyor.

Kod sahasına "001 ve "002" olarak giriyorum
tarih sahanısı eğer 01.01.2009 ile 31.12.2009 şeklinde hata veriyor.
ama tarih sahasını " 01.01.2009" ile " 31.12.2009" olarak girersem hata vemiyor ve sonuç dönüyor ? :roll:

Vallahi hiç bir şey anlamadım.
Delphi 'den de AsDate olarak göndersemde sonuç çıkmıyor...

MySQL tarih formatı mutlaja yyyy-aa-gg mü olmak zorunda !

Nasıl bir iş inan kafam karıştı ! :oops:

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen vkamadan »

Merhaba,
MyDAC bileşenlerini kullanıyorum ve bu gibi durumlarda parametrenin tipi neyse o şekilde (örn : AsDate ) geçmek hiç bir zaman sorun çıkartmadı ,
MySQL varsayılan date_format=%Y-%m-%d şeklindedir, bunu My.ini içinden dileiğiniz formata çevirebilirsiniz.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

S.A.

hocam ne yaptıysam hata veriyor. :cry:
MyDAC kullanıyorum. ama tarih bölümünde hata verip duruyor... :Noops

Tarih alanını SQL Maestro ile 2009-07-01 şeklinde girince hata vermiyor ama sonuçta çıkmıyor !

Bu sorunu nasıl aşıcaz !!

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen vkamadan »

TMyStoredProc yerine TMyQuery kullanın ;
Örn :

Kod: Tümünü seç

 with MyQuery do
begin
 sql.clear;
 sql.add('CALL sp_test(:tarih)');
 ParamByName('tarih1').AsDate := Date;
 
end;

Örnek bir proje yapıp Hem TmyStoredProc ile hemde TMyQuery ile denedim , Exec yada Open metodlarının ikisindede sorunsuzca tarih parametreleri düzgün çalıştı va hata almadım.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

S.A.

Peki hocam TMySP yerine TMyQuery kullanmam hız açısından bir sorun teşkil edermi ?

Önerinizi Şimdi deniyorum !

========================================================================
En son hi_selamlar tarafından 24 Tem 2009 12:37 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen vkamadan »

Hayır hız açısından bir fark olmaz
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU]-MySQL SP Değişkenler Hk

Mesaj gönderen hi_selamlar »

S.A. Hocam,

İlgin için çok teşekkür ederim !

SQL kodum aynı, değiştirmedim !

Ama delphi de parametre yöntemim

Kod: Tümünü seç

ParamByName('KODU').AsString:="DENEME";
olarak geçiyordum.

Sistemimi şu şekilde değiştirdim.

Kod: Tümünü seç

Params[0].AsString:="DENEME";
ve çalışmaya başladı. :bravo:

HOCAM BU NE SAÇMA BİR İŞ YAA. :twisted:

Nedne böyle bir sorun var ki ! Neden yapıyor böyle bir hatayı !

S.A.
Herkes cahildir, bazi konularda.
Cevapla