Makale numarası: 174981 - Son Gözden Geçirme: 13 Temmuz 2004 Salı - Gözden geçirme: 1.2

Oracle'nın normal Resultsets Al nasıl yordamlar depolanan...

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, normal bir resultset'ı bir Oracle, saklı yordam döndüren bir uzak veri nesnesi (RDO) Proje oluşturulması gösterilmiştir. Bu makalede, aşağıdaki Microsoft Knowledge Base makalesinde anlatılan kavramları üzerinde oluşturur:
174679  (http://support.microsoft.com/kb/174679/EN-US/ ) : Resultsets Oracle'dan Al nasıl yordamlar depolanan

Daha fazla bilgi

Microsoft Knowledge Base makale 174679  (http://support.microsoft.com/kb/174679/EN-US/ ) kapsamlı bir saklı yordam bir Resultset dönmek için tüm olası yöntemleri örneği sağlar. Bu makaledeki örnek Basitleştirilmiş bir sürümdür. Işlemi hakkında daha fazla bilgi isterseniz, <a0></a0> 174679  (http://support.microsoft.com/kb/174679/EN-US/ ) için lütfen bakın.

Not: Oracle, saklı yordamları kullanarak Oracle sürüm 2.0 için Microsoft ODBC sürücüsü tarafından oluşturulan Resultsets READ ONLY ve STATIK ' dir. Bir Resultset almak için bir Oracle paketi oluşturulması gerekir.

Bu makaledeki örnek projesi, Visual Basic 5.0 ile oluşturulan ve RDO erişmek ve 2.0 veya sonraki sürümü Oracle için Microsoft ODBC sürücüsü tarafından oluşturulan Resultsets işlemek için kullanır. Bu sürücü Resultsets - Bu makale ve 174679  (http://support.microsoft.com/kb/174679/EN-US/ ) KB ' den-depolanan-yordamlar işlevini kullanmak gerekir. (şu anda, bu yalnızca bir Resultset bir saklı yordam döndürebilir piyasadaki sürücüsüdür). Lütfen, RDO 2.0 Oracle ile kullanma hakkında daha fazla bilgi isterseniz, Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
167225  (http://support.microsoft.com/kb/167225/EN-US/ ) : RDO kullanarak bir Oracle veritabanı Access nasıl kullanılır

Bu makalede, iki bölümü de olur. Proje oluşturma hakkında adım adım bir yordam ilk parçasıdır. Projenin ilginç olan bölümlerini hakkında ayrıntılı tartışma saniyedir.

Adım adım örnek

  1. DDL aşağıdaki komut dosyası, Oracle sunucunuzun çalıştırın:
          DROP TABLE person;
    
          CREATE TABLE person
           (ssn     NUMBER(9) PRIMARY KEY,
            fname   VARCHAR2(15),
            lname   VARCHAR2(20));
    
          INSERT INTO person VALUES(555662222,'Sam','Goodwin');
    
          INSERT INTO person VALUES(555882222,'Kent','Clark');
    
          INSERT INTO person VALUES(666223333,'Sally','Burnett');
    
          COMMIT;
          / 
    
    						
  2. Aşağıdaki paketi Oracle sunucunuzun oluşturun:
          CREATE OR REPLACE PACKAGE packperson
          AS
              TYPE tssn is TABLE of  NUMBER(10)
              INDEX BY BINARY_INTEGER;
              TYPE tfname is TABLE of VARCHAR2(15)
              INDEX BY BINARY_INTEGER;
              TYPE tlname is TABLE of VARCHAR2(20)
              INDEX BY BINARY_INTEGER;
    
              PROCEDURE allperson
                      (ssn    OUT     tssn,
                       fname  OUT     tfname,
                       lname  OUT     tlname);
            PROCEDURE oneperson
                  (onessn IN      NUMBER,
                   ssn    OUT     tssn,
                       fname  OUT     tfname,
                       lname  OUT     tlname);
          END packperson;
          / 
    
    						
  3. Aşağıdaki paketi gövdesi, Oracle sunucunuzun oluşturun:
          CREATE OR REPLACE PACKAGE BODY packperson
          AS
    
          PROCEDURE allperson
                      (ssn    OUT     tssn,
                       fname  OUT     tfname,
                       lname  OUT     tlname)
          IS
              CURSOR person_cur IS
                      SELECT ssn, fname, lname
                      FROM person;
    
              percount NUMBER DEFAULT 1;
    
          BEGIN
              FOR singleperson IN person_cur
              LOOP
                      ssn(percount) := singleperson.ssn;
                      fname(percount) := singleperson.fname;
                      lname(percount) := singleperson.lname;
                      percount := percount + 1;
              END LOOP;
          END;
    
          PROCEDURE oneperson
                (onessn  IN    NUMBER,
                       ssn     OUT   tssn,
                       fname   OUT   tfname,
                       lname   OUT   tlname)
          IS
            CURSOR person_cur IS
                       SELECT ssn, fname, lname
                       FROM person
                       WHERE ssn = onessn;
    
               percount NUMBER DEFAULT 1;
    
           BEGIN
               FOR singleperson IN person_cur
               LOOP
                       ssn(percount) := singleperson.ssn;
                       fname(percount) := singleperson.fname;
                       lname(percount) := singleperson.lname;
                       percount := percount + 1;
               END LOOP;
           END;
           END;
           / 
    
    						
  4. Yeni bir proje, Visual Basic Enterprise sürümünde açın. Varsayılan olarak, Form1 oluşturulur.
  5. Aşağıdaki denetimler form üzerindeki yerleştirin:
       Control     Name             Text/Caption
       -----------------------------------------
       Button      cmdGetEveryone   Get Everyone
       Button      cmdGetOne        Get One
    
    						
  6. Araçlar menüsünden Seçenekler öğesini seçin. "Varsayılan Tam Modül Görünümü" seçeneğini tıklatın ve sonra Tamam'ı tıklatın. Böylece, bu proje kodunu görüntülemek.
  7. Aşağıdaki kodu kodu penceresine yapıştırın:
          Option Explicit
          Dim Cn As rdoConnection
          Dim En As rdoEnvironment
          Dim CPw1 As rdoQuery
          Dim CPw2 As rdoQuery
          Dim Rs As rdoResultset
          Dim Conn As String
          Dim QSQL As String
          Dim tempcnt As Integer
      
          Private Sub cmdGetEveryone_Click()
    
             Set Rs = CPw1.OpenResultset(rdOpenStatic, rdConcurReadOnly)
    
             While Not Rs.EOF
    
                MsgBox "Person data: " & Rs(0) & ", " & Rs(1) & ", " & Rs(2)
                Rs.MoveNext
    
             Wend
    
             Rs.Close
    
             Set Rs = Nothing
    
          End Sub
    
          Private Sub cmdGetOne_Click()
    
             Dim inputssn As Long
    
             inputssn = InputBox("Enter an SSN number:")
    
             CPw2(0) = inputssn
    
             Set Rs = CPw2.OpenResultset(rdOpenStatic, rdConcurReadOnly)
    
             MsgBox "Person data: " & Rs(0) & ", " & Rs(1) & ", " & Rs(2)
    
             Rs.Close
    
             Set Rs = Nothing
    
          End Sub
    
          Private Sub Form_Load()
    
             'Change the text in <> to the appropriate logon
             'information.
             Conn = "UID=<your user ID>;PWD=<your password>;" _
                     & "DRIVER={Microsoft ODBC for Oracle};" _
                     & "SERVER=<your database alias>;"
    
             Set En = rdoEnvironments(0)
             En.CursorDriver = rdUseOdbc
             Set Cn = En.OpenConnection("", rdDriverNoPrompt, False, Conn)
    
             QSQL = "{call packperson.allperson({resultset 9, ssn, fname, " _
                  & "lname})}"
    
             Set CPw1 = Cn.CreateQuery("", QSQL)
    
             QSQL = "{call packperson.oneperson(?,{resultset 2, ssn, fname, " _
                  & "lname})}"
    
             Set CPw2 = Cn.CreateQuery("", QSQL)
    
          End Sub
    
          Private Sub Form_Unload(Cancel As Integer)
    
             En.Close
    
          End Sub
    
    						
  8. Projeyi çalıştırın.
"Everyone Al" düğmesini tıklattığınızda, aşağıdaki sorguyu yürütür:
   QSQL = "{call packperson.allperson({resultset 9, ssn, fname, "_ & "lname})}"
				

Bu sorgu saklı yordam "paket"("packperson.allperson" başvurulan) packperson"olan allperson," Yürütülüyor. Giriş parametresi yoktur ve bu yordamın (ssn fname ve lname), üç diziler döndürüyor her 9 veya daha az kayıtlarla. 174679  (http://support.microsoft.com/kb/174679/EN-US/ ) Içinde belirtildiği gibi en yüksek satır sayısını öğrenmek, döndürme belirtmeniz gerekir. Oracle Yardım dosyası ve da 174679  (http://support.microsoft.com/kb/174679/EN-US/ ) bu sorunla ilgili daha fazla bilgi için Microsoft ODBC sürücüsü'ne başvurun.

"Bir Al" düğmesini tıklattığınızda, bir SSK için uyaran bir giriş kutusuna bakın. Bu sorgu, geçerli bir SSK girin ve Tamam'ı tıklatın sonra çalıştırılır:
   QSQL = "{call packperson.oneperson(?,{resultset 2, ssn, fname, "_ & "lname})}"
				

Saklı yordam, packperson.oneperson, tek bir parametre seçim ölçütü olarak oluşturduğu Resultset için giriş kullanır. Yalnızca packperson.allperson gibi Resultset packperson içinde tanımlanan tablo türleri kullanılarak oluşturulur. (174679  (http://support.microsoft.com/kb/174679/EN-US/ ) Daha fazla bilgi için bkz.)

Not: Yalnızca bir Resultset döndüren Oracle, saklı yordamlar için Giriş parametreleri tanımlayabilirsiniz. Bu saklı yordam çıkış parametrelerini tanımlanamaz.

Bu iki temel saklı yordamlar kapak Resultsets döndüren saklı yordamlar kullanır. Ilk verir, kayıtları (örneğin everyone) ve ikinci önceden tanımlanmış bir dizi olacaktır, temel kayıt (veya tek bir kayıt) bir sağlar veya daha fazla giriş parametreleri. Bunlar Resultsets sahip olduğunuzda, ekler, güncelleştirmeleri ve silmeleri, saklı yordam veya SQL istemci üzerinde oluşturduğunuz yapabilirsiniz.

Referanslar

Microsoft ODBC Driver for Oracle Yardım dosyası

Oracle PL/SQL programı tarafından Steven Feuerstein

Visual Basic ve SQL Server tarafından William Vaughn hitchhiker'in Kılavuzu

Ek bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
174679  (http://support.microsoft.com/kb/174679/EN-US/ ) : Resultsets Oracle'dan Al nasıl yordamlar depolanan

167225  (http://support.microsoft.com/kb/167225/EN-US/ ) : RDO kullanarak bir Oracle veritabanı Access nasıl kullanılır

175018  (http://support.microsoft.com/kb/175018/EN-US/ ) : Al'ı ve Microsoft Oracle ODBC sürücüsü yükleme

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.0
  • Microsoft Open Database Connectivity 2.5
Anahtar Kelimeler: 
kbmt kbhowto KB174981 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:174981  (http://support.microsoft.com/kb/174981/en-us/ )