我有一个oracle函数,它有一个in参数,它是一个表的rowtype,从select语句我需要将当前行传递给这个函数,以便它进行一些处理并返回一个值.是否存在可以在select语句的上下文中使用的伪变量,其等同于触发器中的旧的和新的.
我想做点什么
select *,function1(rowtype) from table1
我想避免传递多个参数,因此应该在该上下文中看到问题.
您无法使用%ROWTYPE做到这一点。%ROWTYPE实际上是PL / SQL记录类型,在SQL中不是合法类型,因此您不能在SELECT中使用它。您应该创建一个与表具有相同列的对象类型,更改为函数以使用该对象类型而不是%ROWTYPE,然后可以编写如下代码:
SELECT function(table1_typ(column1, column2, column3)) FROM table1 t1
缺点:您仍然必须在SELECT中键入所有列,如果更改表,则也需要更改对象类型和SELECT。