SORU
21 EKİM 2010, PERŞEMBE


SQL Geliştirici Saklı Yordamı çalıştırmak?

Birden fazla ve faktörleri olan bir saklı yordamı çalıştırmak için çalışıyorum. Prosedür sadece | | | | Paketleri Diğer Kullanıcıların giderek benim Bağlantıları panelinde görüntülenebilir

Ben sağ tıklatın , menü öğeleri "Amacıyla Üyeleri..." ve "Birim Test Oluşturma" (gridir). ""İşlem kullanıcı tarafından erişilebilir olduğunda mümkün görünmüyor. Çalıştırma yeteneği

SQL dosyası olarak yordamı çalıştırabilirsiniz böylece anonim bir blok oluşturmak için nasıl bir örnek bulmaya çalışıyorum, ama işe yarar şeyler bulamadım.

Merhaba SQL Geliştirici, bu yordamı yürütmek nasıl biliyor mu? Sürüm 2.1.1.64 kullanıyorum.

Şimdiden teşekkürler!

EDİT 1:

Aramak istiyorum prosedür bu imza vardır:

user.package.procedure(
   p_1 IN  NUMBER,
   p_2 IN  NUMBER,
   p_3 OUT VARCHAR2,
   p_4 OUT VARCHAR2,
   p_5 OUT VARCHAR2,
   p_6 OUT NUMBER)

Eğer yazarsam anonim benim bloğu bu gibi:

DECLARE
   out1 VARCHAR2(100);
   out2 VARCHAR2(100);
   out3 VARCHAR2(100);
   out4 NUMBER(100);
BEGIN
   EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4);
END;

Hata alıyorum:

Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed

* Değişkenlerini başlatma denedim:

   out1 VARCHAR2(100) := '';

ama aynı hatayı alıyorum:

EDİT 2:

Alex'in cevabı dayalı, iki nokta üst üste çıkarma parametreler önünden çalıştım ve şunu öğrendim.

Error starting at line 1 in command:
DECLARE
   out1 VARCHAR2(100);
   out2 VARCHAR2(100);
   out3 VARCHAR2(100);
   out4 NUMBER(100);
BEGIN
   EXECUTE user.package.procedure (33,89, out1, out2, out3, out4);
END;
Error report:
ORA-06550: line 13, column 17:
PLS-00103: Encountered the symbol "USER" when expecting one of the following:

   := . ( @ % ; immediate
The symbol ":=" was substituted for "USER" to continue.
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

CEVAP
21 EKİM 2010, PERŞEMBE


Basit parametre türleri (yani değil refcursors vb.) böyle bir şey yapabilirsiniz:

SET serveroutput on;
DECLARE
    InParam1 number;
    InParam2 number;
    OutParam1 varchar2(100);
    OutParam2 varchar2(100);
    OutParam3 varchar2(100);
    OutParam4 number;
BEGIN
    /* Assign values to IN parameters */
    InParam1 := 33;
    InParam2 := 89;

    /* Call procedure within package, identifying schema if necessary */
    schema.package.procedure(InParam1, InParam2,
        OutParam1, OutParam2, OutParam3, OutParam4);

    /* Display OUT parameters */
    dbms_output.put_line('OutParam1: ' || OutParam1);
    dbms_output.put_line('OutParam2: ' || OutParam2);
    dbms_output.put_line('OutParam3: ' || OutParam3);
    dbms_output.put_line('OutParam4: ' || OutParam4);
END;
/


DüzenlenmişOP spec kullanmak, ve :var bind değişkenleri kullanmak için alternatif bir yaklaşım:

var InParam1 number;
var InParam2 number;
var OutParam1 varchar2(100);
var OutParam2 varchar2(100);
var OutParam3 varchar2(100);
var OutParam4 number;

BEGIN
    /* Assign values to IN parameters */
    :InParam1 := 33;
    :InParam2 := 89;

    /* Call procedure within package, identifying schema if necessary */
    schema.package.procedure(:InParam1, :InParam2,
        :OutParam1, :OutParam2, :OutParam3, :OutParam4);
END;
/

-- Display OUT parameters
print :OutParam1;
print :OutParam2;
print :OutParam3;
print :OutParam4;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CMTelly

    CMTelly

    2 Mayıs 2007
  • metal571

    metal571

    30 Mayıs 2006
  • Willie D.

    Willie D.

    16 Aralık 2006