Примерно так бы и получилось, но я не уверен, зачем вам нужен такой код PL SQL (обратите внимание, что я упростил часть where) ... Вот она:
DECLARE
rsid varchar2(100);
obid varchar2(100);
nme varchar2(100);
descp varchar2(100);
cursor c_test
is
SELECT ob.asset_id
, ob.object_id
, ob.name
, ob.short_description
FROM objectbase ob;
BEGIN
FOR i in c_test loop
rsid := i.asset_id;
obid := i.object_id;
nme := i.name;
descp := i.short_description;
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END LOOP;
END;
Вот это ДЕМО
Тогда используйте это:
DECLARE
rsid varchar2(100);
obid varchar2(100);
nme varchar2(100);
descp varchar2(100);
BEGIN
FOR i IN (SELECT ob.asset_id
, ob.object_id
, ob.name
, ob.short_description
FROM objectbase ob) LOOP
rsid := i.asset_id;
obid := i.object_id;
nme := i.name;
descp := i.short_description;
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END LOOP;
END;
/
Вот это ДЕМО
И здеськод с вашими таблицами и столбцами:
DECLARE
rsid objectbase.asset_id%TYPE;
obid i18n_objectbase.object_id%TYPE;
nme i18n_objectbase.name%TYPE;
descp i18n_objectbase.short_description%TYPE;
BEGIN
FOR i IN (SELECT
ob.asset_id,
o.object_id,
o.name,
o.short_description
FROM
objectbase ob
JOIN i18n_objectbase o ON ( ob.object_id = o.object_id )) loop
rsid := i.asset_id;
obid := i.object_id;
nme := i.name;
descp := i.short_description;
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END LOOP;
END;