1

Railo サーバーに対して書かれたコードがたくさんあります。現在、そのコードの一部を CF11 ボックスと Lucee ボックスに移動しようとしています。

私は次のようにqueryExecuteを使用しています:

rt = queryExecute(
        sql = 'select *
               from translation
               where    translationID = :translationID
                 and    translatedStr = :translatedStr'
    ,   params = {translationID: arguments.translationID
                , translatedStr: arguments.translatedStr}
    ,   options= {datasource: application.ds}
);

CF11でも構文が同じであるという印象を受けましたが、エラーが発生しています:

Parameter validation error for the QUERYEXECUTE function.
A built-in ColdFusion function cannot accept an assignment statement as a parameter, 
although it can accept expressions. For example, QUERYEXECUTE(d=a*b) is not acceptable. 

上記の executeQuery は Lucee で正常に動作します。コードベース全体を調べて、CF11 と Lucee の両方で動作させる必要があります。

ACF に詳しい方が、これを行う最善の方法を教えてください。ACF がパラメーター名に問題を抱えているようです。削除するsql =params =、問題の一部が取り除かれますが、名前が付けられていることの読みやすさは気に入っています。また、ACF が気に入らないようtranslationID: arguments.translationIDで、私にも変更を求めているようtranslationID = arguments.translationIDです。すべての変更を行うという時間のかかるプロセスを経る前に、欠けているものがないことを確認したいだけです。

4

2 に答える 2

1

値 (および選択した場合はクエリ パラメータ) を含めるには、パラメータを構造体の形式にする必要があることを確認してください。

これを試して:

rt = queryExecute(
    "select *
      from translation
      where translationID = :translationID
          and translatedStr = :translatedStr",
    {
          translationID: {value: arguments.translationID},
          translatedStr: {value: arguments.translatedStr}
    },
    {datasource: application.ds}
);
于 2015-08-08T00:33:58.293 に答える