select içinde sp 2 buda başka bi sorun yapamadım

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
proteam
Üye
Mesajlar: 7
Kayıt: 08 Tem 2008 11:08

select içinde sp 2 buda başka bi sorun yapamadım

Mesaj gönderen proteam »

select içinde sp yi nasıl kullanacağımızı öğrendim ama şöyle bi sorun ortaya çıktı
yetki kontrolü için bir sp yazdım oda şöyle

Kod: Tümünü seç



CREATE OR ALTER PROCEDURE YETKI_KONTROL (
    userid integer,
    yetkiid integer)
returns (
    sonuc varchar(6))
as
declare variable sayi integer;
begin
  /* Procedure Text */

  select count(*) from yetki where user_id =:userid and yetki_id = :yetkiid
  into :sayi;
  if (sayi =1) then
    begin
   sonuc = 'evet';
    end
     if (sayi =0) then
     begin
          sonuc = 'Hayır';
          end
  suspend;
end
bide yetki taplom var onuda göstereyim

Kod: Tümünü seç

CREATE TABLE YETKI (
    ID        INTEGER NOT NULL,
    USER_ID   INTEGER NOT NULL,
    YETKI_ID  INTEGER,
    ACIKLAMA  VARCHAR(30)
  );

tabloda da yetkiler var

id    user_id   yetki_id  aciklama

1      1            10          prg_gir
2      1            11           sil
3      1            12          raporla...
şimdi ben ib expert de SqlEditörü açıp
şu kodu yazıyorum

Kod: Tümünü seç

SELECT user_id,yetki_id,(SELECT sonuc from  yetki_kontrol(yetki.user_id,10)) as "procedure_dönen",aciklama from yetki
where user_id =1
çalışıyor ama bana şu şekilde çıktı veriyor

Kod: Tümünü seç

user_id     yetki_id    procedure_dönen     aciklama
  1                10                 evet               prggir
  1                11                 evet               sil
  1                12                 evet               raporla

normalde sadece  yetki_id si 10 olana evet diğerlerine hayır yazması gerekmiyormu. yanlışım nerede yoksa firebird çokmu zayıf
şimdiden ilgilen tüm arkadaşlara sonsuz teşekkür   

NOT execute procedure yetki_kontrol (1,10)  sonucu doğru veriyor ama iş select içinde verdiğim yetki id ye kimler sahip onu görmek istediğimde
hepsine evet yazıyor yukarıdaki gibi
En son proteam tarafından 11 Tem 2008 09:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Re: select içinde sp 2 buda başka bi sorun firebird sınıftamı ka

Mesaj gönderen undefined »

select cümlenin where bölümünde yetki.user_id = 1 diye yazmışsın. Subselect cümlesinde ise yetki_kontrol procedureunede her zaman (1,10) diye parametre gidiyor bu şekildede. Aynı parametrelerdende aynı sonucu alıyorsun.. olay bu..

Firebird'e niye bu kadar güvensizlik duyuyorsun. Kendi yaptığın işe, firebird den daha az güven. Soru başlığını "... buda başka bir sorun ben mi beceremedim" diye yazsaydın daha uygun olurdu. (Ayar mode on :) )

Kolay gelsin.
proteam
Üye
Mesajlar: 7
Kayıt: 08 Tem 2008 11:08

Re: select içinde sp 2 buda başka bi sorun yapamadım

Mesaj gönderen proteam »

s.a
peki hatamı anladım teşekkürler. yoksa bu nedne olmuyo diye bağaı yorulacaktım. ama benim yapamk isteğim buna paralel bişi
ben isityorum ki tüm kullanıcı adları gelsin karşısına atıyorum 10 nolu yetki id si olanlara sp evet yazsın olmayanlara hayır. ama tüm kullanıcılar dökülsün.
bunun için nasıl bi p yazmam lazım. yardımcı olursanız çok sevinirim.
Cevapla