1

私は 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>

少なくともCALL proc_select_extern('value');を取得できると思いました。MySQLでレポートしますが、これも取得していません。

編集:
したがって、次のように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 で同じことを試しています。

4

3 に答える 3

2

何らかの形式のColdFusionエラーメッセージはありますか?また、リクエストでデバッグを有効にしている場合、そこでプロシージャ呼び出しが行われているのがわかりますか?

また、ただの観察。ストアドプロシージャのSQLは非常に基本的です(結合なしの単一テーブル選択)。これをストアドプロシージャにすると、インラインクエリよりも多くのSQLオーバーヘッドが発生します。ストアドプロシージャを使用してもパフォーマンスは向上しません。

于 2012-06-02T14:56:13.223 に答える
0

これが私のために働いたものです:

<cfquery name ="myQuery" datasource="mydataSource">
call sp_myprocedure();
</cfquery>

しばらくの間、このエラー メッセージの解決策を探していましたが、何も思いつきませんでした。私は coldfusion 10 を使用していますが、MySQL サーバーで実行すると、MySQL プロシージャは正常に実行されます。試したら買う

<cfstoredprocedure .....

次のエラーがスローされます。

「データベース クエリの実行中にエラーが発生しました。ユーザーには、ストアド プロシージャのパラメーターの種類を決定するために必要なメタデータへのアクセス権がありません。権限を付与できない場合は、「noAccessToProcedureBodies=true」を使用して接続を構成し、実際のパラメーターの種類に関係なく、ドライバーが INOUT 文字列を表すパラメーターを生成するようにします。 ."

上記のパラメーターを使用して JDBC 接続をセットアップしようとしましたが、どちらも役に立ちませんでした。そのため、正常に機能しているように見えるクエリとしてプロシージャへの呼び出しを渡すことになりました。今後の参考のために、ここにソリューションをドロップします。

于 2013-07-23T18:37:31.800 に答える
0

上記の明確な答えはありませんでした。私は同じ問題に遭遇し、CF 管理者でデータソースを編集し、詳細設定で、許可された SQL セクションで「ストアド プロシージャ」をオフにして修正しました。

于 2012-08-29T18:56:33.353 に答える