我在Oracle中有一个存储过程。输入参数之一是定义类型(见下文)。每当我调用cfstoredproc时,我得到的错误是"表达式类型错误ORA-06550"。它是一个格式化的varchar,它是一个表列。没有与之匹配的CFPROCPARAM类型。
类型是包定义的特定格式(表格列):EMAIL_ADDRESSES_TABLE.USER_ID%TYPE。 表列USER_ID是:USER_ID VARCHAR2(8 BYTE)
USER_ID是0填充的数字,例如&00; 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
答案 0 :(得分:1)
这些函数最初设置为作为Java API调用公开。
简短回答:这是一个“功能”,而不是“程序”。 ColdFusion无法直接调用DB函数。
解决方法(此处提供此信息的人提供的信息):需要创建调用该函数的Oracle PROCEDURE。它只是充当CF和Oracle函数之间的中介。