Announcement

Collapse
No announcement yet.

variable von pl/sql block außerhalb verwenden.....

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • variable von pl/sql block außerhalb verwenden.....

    hallo an alle!

    als erstes möchte ich mich für die schnelle hilfe und die tollen antworten bei meinen vorigen fragen bedanken!!!

    jetzt ist es wieder so weit.......ein neues problem ist aufgetaucht:

    ich möchte meine variable "ERGEBNIS" im PL/SQL block in der ganz unten stehenden select Abfrage an der stelle ???? einsetzen....
    wie kann ich das machen???? bisher habe ich immer bindvariablen verwenden können aber das geht in diesem fall glaub ich nicht.......danke im vorraus........ ofna

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

    column dcol new_value mydate noprint
    select to_char(sysdate,'YYYYMMDDhhmi') dcol from dual;
    spool D:\AMIS\SQL\Marc\LW_O_Egebnisse/&mydate._AMIS_Schleifentest.txt

    set feedback off
    set tab off
    SET LINESIZE 100
    set pagesize 0
    set colsep ';'
    set heading off
    set verify off
    set serveroutput on

    variable d number
    variable cc number

    declare

    CURSOR cQuery IS /*Zähler unterscheiden*/
    select sd.id resStr, sd.id
    from store_device sd where sd.description like 'AMIS%';

    rQuery cQuery%RowType;
    oldTarget store_device.id%Type;

    CURSOR cTest IS /*Wirkrichtung heraussuchen*/
    select name, measured_type resStr, measured_type
    from datachannel where store_device_id = :d and type like 'PPRF';

    rTest cTest%RowType;
    oldTar datachannel.measured_type%Type;
    a number := 0;
    b number := 0;
    c number := 0;
    d number := 0;
    ergebnis number;

    begin

    dbms_output.enable(102400);
    open cQuery;

    loop
    fetch cQuery into rQuery;
    exit when cQuery%NOTFOUND;
    if (oldTarget IS NULL) OR (oldTarget <> rQuery.id) then

    oldTarget := rQuery.id;

    select id into :d from store_device where id = oldTarget;

    dbms_output.put_Line(oldTarget);

    open cTest;

    loop

    fetch cTest into rTest;
    exit when cTest%NOTFOUND;

    oldTar := rTest.measured_type;
    if (oldTar = 1) then
    a := 1;
    dbms_output.put_Line(a);
    else if (oldTar = 2) then
    b := 2;
    dbms_output.put_Line(b);
    else if (oldTar = 3) then
    c := 4;
    dbms_output.put_Line(c);
    else if (oldTar = 4) then
    d := 8;
    dbms_output.put_Line(d);
    end if;
    end if;
    end if;
    end if;

    end loop;

    ergebnis := a+b+c+d;
    dbms_output.put_Line('Summe:');
    dbms_output.put_Line(ergebnis);
    dbms_output.put_Line('--------------------');

    a := 0;
    b := 0;
    c := 0;
    d := 0;

    close cTest;

    end if;
    end loop;
    close cQuery;

    select id into :cc from action_mode where name = '&1';

    end;
    /

    select to_char(sysdate,'MMDDhhmiss') ||';'|| td.target_address ||';'||'????'||';'
    from store_device sd, trans_device td where td.id = sd.trans_device_id
    and sd.id IN (select ag.store_device_id from action_group ag, action_mode_lnk aml where ag.id = aml.action_group_id and aml.action_mode_id= :cc and ag.name like '&2.%')
    order by td.target_address;

    spool off
    exit

  • #2
    Hallo ofna,

    <hr noshade size=1><cite>wie kann ich das machen???? bisher habe ich immer bindvariablen verwenden können aber das geht in diesem fall glaub ich nicht....</cite><hr noshade size=1>
    Wieso soll das nicht gehen? Du kannst statt deiner lokalen PL/SQL Variable auch eine globale Bindvariable verwenden. Ich wüßte keinen Grund, warum das nicht gehen sollte!
    Alternativ geht natürlich auch:

    ...
    variable cc number
    <b>variable plsql_ergebnis number</b>
    declare
    ...
    ...
    select id into :cc from action_mode where name = '&1';
    <b>lsql_ergebnis := ergebnis;</b>
    end;
    /

    select to_char(sysdate,'MMDDhhmiss') ||';'|| td.target_address ||';<b>'''||lsql_ergebnis||'''</b>;'

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Danke Falk für deine rasche Antwort.......

      Wie immer hast du mich eines besseren belehrt (gottseidank) und mein problem so gelöst.....

      danke mfg mar

      Comment

      Working...
      X