0

我在 Oracle 中有一个存储过程。其中一个输入参数是定义的类型(见下文)。每当我调用 cfstoredproc 时出现的错误是“表达式的类型错误 ORA-06550”。它是一个格式化的 varchar,它是一个表格列。没有与之匹配的 CFPROCPARAM 类型。

类型是包定义的特定格式(表列):EMAIL_ADDRESSES_TABLE.USER_ID%TYPE。表列 USER_ID 为:USER_ID VARCHAR2(8 BYTE)

USER_ID 是一个用 0 填充的数字,例如 '00001234'

我的电话:

<cfstoredproc procedure="PK_EMAIL.get_emails" datasource="#MYDSN#">
  <cfprocparam type="in" cfsqltype="CF_SQL_VARCHAR" variable="p_user_id" value="#formattedUserId#">
  <cfprocparam type="in" cfsqltype="CF_SQL_NUMERIC" variable="p_active_only" value="1">
  <cfprocresult name="spResult">
</cfstoredproc>

存储过程函数:

FUNCTION get_emails(
  p_user_id        IN EMAIL_ADDRESSES_TABLE.USER_ID%TYPE,
  p_active_only    IN SIMPLE_INTEGER
) RETURN EMAIL_ADDRESSES_TABLE;

我从系统得到的错误是:

[Macromedia][Oracle JDBC Driver][Oracle]ORA-06550: line 1, column 18: PLS-00382: expression is of wrong type ORA-06550: line 1, column 7: PL/SQL: Statement ignored 
4

1 回答 1

1

@DanBracuk 帮我解决了这个问题。

这些函数最初设置为作为 Java API 调用公开。

简短的回答:这是一个“功能”,而不是“程序”。ColdFusion 不能直接调用数据库函数。

解决方法(由这里做过一次的人提供的信息):需要创建一个调用该函数的 Oracle PROCEDURE。它只是充当 CF 和 Oracle 函数之间的中介。

于 2014-08-08T16:51:23.280 回答