2010-11-29 55 views
2

我正在将SQL Server存储过程转换为Oracle。在SQL Server中,您可以从函数调用中插入到表中。Oracle从函数中插入

这是在SQL Server:

INSERT INTO t_tmpl(rel_class_code, rel_side, template_id, template_name, template_desc) 
SELECT rel_class_code, ls_rel_side, obj_id, name, description 
FROM etmf_get_templates_for_rel(ps_rel_class_code, ls_rel_side, pi_called_by) 

错误消息转换这到Oracle时,我得到的是 “PL/SQL:ORA-00933:SQL命令不能正确地结束”。

有谁知道这个声明应该在Oracle中看起来像什么吗?

谢谢!

+1

如何定义你的功能? – kurosch 2010-11-29 18:47:29

回答

3

如果你的函数返回一个流水线的结果集,你只需要把里面的函数表如下:

INSERT INTO t_tmpl 
    (rel_class_code, rel_side, template_id, template_name, template_desc) 
    SELECT rel_class_code, ls_rel_side, obj_id, name, description 
    FROM TABLE(
     etmf_get_templates_for_rel(ps_rel_class_code, ls_rel_side, pi_called_by) 
    )