我正在使用Coldfusion8并试图获得一个简单的存储过程来运行MySQL id-lookup。
当我从MySQL内部启动程序时,它正在工作。但是在我的Coldfusion页面上,没有任何反应。
这是我的程序:
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_select_extern`(IN `iln_to_match` VARCHAR(13))
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN
SELECT tn.iln
FROM teilnehmer AS tn
WHERE tn.iln = iln_to_match
LIMIT 1;
END
我的程序在Coldfusion中调用:
<cfstoredproc procedure="proc_select_extern" datasource="dns">
<cfprocparam type="in" value="#Session.Extern#" cfsqltype="cf_sql_varchar" maxlength="13">
<cfprocresult name="extern">
</cfstoredproc>
<cfoutput query="extern">
<p>Hello #extern.username#</p>
</cfoutput>
我以为我至少会在MySQL中获得 CALL proc_select_extern
('value'); 报告,但我甚至没有得到这个。
修改
所以我让它在一个空页面上作为CFQUERY工作:
<cfquery datasource="db" NAME="extern">
SELECT tn.iln
FROM teilnehmer AS tn
WHERE tn.iln = #Session.Extern#
LIMIT 1
</cfquery>
<cfdump var="#extern#">
<cfoutput>#IsDebugMode()#</cfoutput>
现在尝试使用storedProc。
答案 0 :(得分:2)
是否存在某种形式的ColdFusion错误消息?此外,如果您在请求上启用了调试,您是否看到在那里进行过程调用?
另外,只是一个观察。存储过程中的SQL非常基本(单表选择没有连接)。将此作为存储过程将比内联查询创建更多的sql开销。使用存储过程不会带来任何性能提升。
答案 1 :(得分:0)
我上面没有看到明确的答案。我遇到了同样的问题并通过在CF管理员中编辑数据源来修复它,并在高级设置下,检查&#34;存储过程&#34;在允许的SQL部分中。
答案 2 :(得分:0)
这对我有用:
<cfquery name ="myQuery" datasource="mydataSource">
call sp_myprocedure();
</cfquery>
我一直在寻找这个错误消息的解决方案一段时间,但没有提出任何建议。我在coldfusion 10上,我的MySQL程序在MySQL服务器上运行时运行正常。我尝试时买。
<cfstoredprocedure .....
它会抛出以下错误:
“执行数据库查询时出错。用户无权访问元数据 需要确定存储过程参数类型。如果权利可以 不被授予,配置连接 “noAccessToProcedureBodies = true”让驱动程序生成参数 代表INOUT字符串,无论实际参数类型如何。“
我尝试使用上面的参数设置JDBC连接,但它也没有帮助。所以最终传递一个调用程序作为查询似乎工作正常。将解决方案放在此处以供将来参考。