Много замечательных советов выше, но не очень многократно используемых и слишком часто заполненных глупостью DOM и другим пухом, который скрывает легкий код.
Вот класс Javascript, который мы создали, который многоразовый и простой в использовании. В настоящее время он имеет только метод GET, но это работает для нас. Добавление POST не должно облагать навыками кого-либо.
var HttpClient = function() {
this.get = function(aUrl, aCallback) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
aCallback(anHttpRequest.responseText);
}
anHttpRequest.open( "GET", aUrl, true );
anHttpRequest.send( null );
}
}
Использование этого файла так же просто, как:
var client = new HttpClient();
client.get('http://some/thing?with=arguments', function(response) {
// do something with response
});
Что-то вроде следующего, где вы на самом деле открываете и извлекаете из курсора. Вам нужно будет присвоить значение v_plt_no для курсора, чтобы получить что-нибудь.
create or replace PROCEDURE update_qty
is
v_plt_no nvarchar2(20);
v_qty number;
cursor q1 is
select count(slab_no)
into v_qty
from prod_result
where plt_no = v_plt_no;
begin
OPEN q1;
FETCH q1 INTO v_qty;
CLOSE q1;
if v_qty > 0 then
update plt_result
set qty = 'v_qty'
where plt_no = v_plt_no;
end if;
end;
Я не уверен, какую версию вы ищете - это та, которая перебирает все PLT_NO в таблице, или та, которая должна принимать PLT_NO в качестве параметра. Вот оба варианта, посмотрите, поможет ли какой-либо из них.
Первый использует курсор курсора FOR; это легче поддерживать, поскольку Oracle выполняет большую часть грязной работы за вас (открытие курсора, выборка, выход из цикла, закрытие курсора).
create or replace procedure update_qty
is
begin
for cur_r in (select plt_no, count(slab_no) v_qty
from prod_result
group by plt_no
)
loop
if cur_r.v_qty > 0 then
update plt_result r set
r.qty = cur_r.v_qty
where r.plt_no = cur_r.plt_no;
end if;
end loop;
end;
Второй принимает PLT_NO в качестве параметра:
create or replace procedure update_qty
(par_plt_no in prod_result.plt_no%type)
is
v_qty number;
begin
select count(p.slab_no)
into v_qty
from prod_result p
where p.plt_no = par_plt_no;
if v_qty > 0 then
update plt_result r set
r.qty = v_qty
where r.plt_no = par_plt_no;
end if;
end;