0

我已经在这里和网上搜索了解决方案,但它们似乎只是导致我太缺乏经验的其他错误(第一个构建是在 PHP 中,现在我必须将它移动到存储过程)。我有一张我的校园地图,当用户点击一座建筑物时,会弹出一个信息气泡以显示一些信息和一个图片库。图片的地址存储在一个表中,因此我需要将它们返回到一个数组中,以便循环遍历它们。获取列表的调用是:

$.ajax({ //get the picture URLs, load into array
        type: "post",
        url: "video_tour.get_pics",
        data: { pBldg_id:  building
        },
        error: function(xhr,thrownError) { alert("error get pics"); },
        success: function(data){
                  $.each(data, function(index,obj) {
                         picArray[index] = obj.ADDRESS;
                  });
        }
});//and ajax for pic load

和被调用的程序:

procedure get_pics(pBldg_id int) is
     type array_varchar is table of varchar2(2000) index by binary_integer;

     array_of_pics array_varchar;
     v_counter int := 0;
begin

for i in(select address from ucs.campus_pictures where building_id = pBldg_id and thumbnail = 1) loop
     array_of_pics(v_counter) := i.address;
     v_counter := v_counter + 1;
end loop;               

end get_pics;

我怎样才能将 array_of_pics 带回 ajax 调用?

4

2 回答 2

0

我假设您有一些处理请求然后调用过程的中间件(即使它是一个 PHP 页面)。从那里开始,您实际上想要返回一个游标(参见下面的示例)。在您的中间件中,您将遍历来自光标的结果集。

    create or replace function get_pics(bldg_id_in ucs.campus_pictures.building_id%TYPE)
return sys_refcursor
as
ref_cursor sys_refcursor;
begin
   open ref_cursor for
     select address from ucs.campus_pictures where building_id = bldg_id_in and thumbnail = 1;
   return ref_cursor;
end;
于 2012-05-18T01:50:41.480 回答
0

所以它并不像看起来那么复杂,我只需要打印出来的数据并添加一个分隔符:

  for i in(select address from ucs.campus_pictures where building_id = pBldg_id and thumbnail = 1) loop
htp.prn(i.address || ';');
end loop; 

并在 ajax 调用中创建一个数组:

 $.ajax({ //get the picture URLs, load into array
                     type: "post",
                     url: "video_tour.get_pics",
                     data: { pBldg_id:  building
                     },
                     error: function(xhr,thrownError) { alert("error get pics"); }, 
                     success: function(data){
                      $.each(data.split(";"), function(index,obj) {
                                    picArray[index] = obj;
                              });

                     }
            });

感谢大家抽出宝贵时间提供帮助!

于 2012-05-21T22:27:50.490 回答