CURSOR recipe_attributes_cur(p_recipe_id IN recipe_data.recipe_id%TYPE) IS
SELECT t.attribute_name, t.attribute_value,
CASE
WHEN ra.enum_list IS NOT NULL
THEN (SELECT choice_str
FROM recipe_enums_v
WHERE enum_list = ra.enum_list
AND choice_id = rd.recipe_value_num)
ELSE TO_CHAR (NULL)
END AS enum_value,
ra.datatype_id
***FROM table(acls_recipe.get_sic_attributes_value(p_recipe_id)) t***, recipe_attributes ra
where ra.attribute_name = t.attribute_name
order by ra.attribute_id --t.attribute_name
UNION ALL
1条答案
按热度按时间kb5ga3dv1#
恐怕您不能使用您问题中的内容来动态声明光标。但是,还有一种非常类似的方法可以做到这一点。
您可以在包函数中动态生成Select语句,并将该语句用作引用游标。下面是一个简单的CMOD包中的testf2()函数示例:
此函数接受VarChar2参数(可以是生成SQL所需的任何内容),并返回生成的Select语句。如果参数为‘DUAL’,则函数将返回...
现在,为了使其正常工作,获取该函数生成的Select语句并将其用作引用游标…
这样,您就可以生成您自己的SQL--将其作为引用游标打开并循环通过它来完成您的工作。
致敬..。