2017-07-26 8 views
0

パラメータ化されたN1QLクエリを使用しようとしていますが、jsonプレースホルダを認識せず、不正な構文例外がスローされています。N1QLクエリでパラメータが認識されない

コード:FROM句の後

public static final String LMR_DETAILS 
    = "SELECT * FROM $bucketName WHERE lmr.lmrStatusDescriptionTe ='PENDING'and STR_TO_MILLIS(lmr.recordExpirationTs) BETWEEN STR_TO_MILLIS($startTime) AND STR_TO_MILLIS($endTime)"; 

String bucketName = bucket.bucketManager().info().name(); 
        JsonObject placeHolders = JsonObject.create().put("bucketName", bucketName).put("startTime", reqDates[0]).put("endTime", reqDates[1]); 
        N1qlQuery query = N1qlQuery.parameterized(QueryString.LMR_DETAILS, placeHolders); 
        N1qlQueryResult result = bucket.query(query); 
+0

FROM句の後のバケット名はパラメータ化できません。 – vsr

答えて

0

静的識別子バケットまたはサブクエリを参照して、それがパラメータ化変数にすることはできませんが必要です。パラメータ化された変数として$ bucketNameを削除し、LMR_DETAILSを動的に構築して実際のバケット名に置き換えます。

+0

ありがとうございます@vsr。しかし、私は異なる名前を持つ多くの環境を持っているので、バケット名を動的に渡す必要があります。どうすればいいですか? – Sree

+0

文字列LMR_DETAILS = "SELECT * FROM" + bucket.bucketManager()。info()。name()+ "WHERE lmr.lmrStatusDescriptionTe = 'PENDING'とSTR_TO_MILLIS(lmr.recordExpirationTs)BETWEEN STR_TO_MILLIS($ startTime )とSTR_TO_MILLIS($ endTime) "; – vsr

関連する問題