Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle ColdFusion-cfproc param:如何使用db定义的变量%TYPE调用存储的proc?_Oracle_Coldfusion_Coldfusion 9_Cfqueryparam_Cfstoredproc - Fatal编程技术网

Oracle ColdFusion-cfproc param:如何使用db定义的变量%TYPE调用存储的proc?

Oracle ColdFusion-cfproc param:如何使用db定义的变量%TYPE调用存储的proc?,oracle,coldfusion,coldfusion-9,cfqueryparam,cfstoredproc,Oracle,Coldfusion,Coldfusion 9,Cfqueryparam,Cfstoredproc,我在Oracle中有一个存储过程。其中一个输入参数是定义的类型(见下文)。每当调用cfstoredproc时,我得到的错误是“表达式的类型错误,ORA-06550”。这是一个格式化的varchar,它是一个表列。没有与之匹配的CFPROCPARAM类型 类型是包定义的特定格式(表列):电子邮件地址表。用户ID%类型。 表列USER\u ID为:USER\u ID VARCHAR2(8字节) 用户_ID是一个0填充的数字,如“00001234” 我的电话: <cfstoredproc pro

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

类型是包定义的特定格式(表列):电子邮件地址表。用户ID%类型。 表列USER\u ID为:USER\u ID VARCHAR2(8字节)

用户_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>
我从系统中得到的错误是:

[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 

@DanBracuk帮我解决了这个问题

这些函数最初设置为作为JavaAPI调用公开

简单回答:这是一个“功能”,而不是一个“过程”。ColdFusion无法直接调用DB函数


解决方法(这里有人提供了这方面的信息):需要创建一个调用函数的Oracle过程。它只是CF和Oracle函数之间的中介。

请显示存储过程中声明输入参数的部分。我以为我已经发布了所有内容,但下面是相关的表声明:表EMAIL\u ADDRESSES\u table。。。USER_ID VARCHAR2(8字节)不知道oracle,但对于其他数据库,存储过程和函数是不同的。在这种情况下,我对术语“存储过程函数”的解释是,您的存储过程调用函数。这不对吗?@DanBracuk-哦,啊哈。我过去给很多商店打过电话。但你是对的,这是一个公共活动,不是一个“程序”。现在我必须弄清楚如何调用它。我假设你像调用任何其他函数一样调用它-
get\u emails(userId,true)
我认为如果你可以从查询语句调用该函数(比如从Oracle相当于SQL server Management Studio的语句),你应该能够从标记中调用它。@Carl是正确的
SELECT myFunction(),因为DUAL的函数_result
是来自ColdFusion的有效查询(假设输出正确)。
[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