我有一个 oracle 函数,它有一个 in 参数,它是表的行类型,我需要从 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)