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
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
Comment