リモートのMicrosoftSQLServer2005インスタンスからの読み取り/リモートへの書き込みのためのさまざまなメソッドを備えたABAPクラスがあります。
すべてが期待どおりに機能します。安全上の理由から、SELECTクエリにSQL Serverテーブルヒント(READPAST)を追加するようにアドバイスされました(デッドロックに対する対策となるはずです。SQLの専門家からはほど遠いです)。
悲しいことに、私はそれを機能させることができません。これは私のネイティブSQLブロックであり、そのまま機能します。
EXEC SQL.
OPEN ritc FOR
SELECT FIELD1,
FIELD2,
FIELD3,
FROM MY_TABLE
WHERE FIELD1 <= :lv_variable1
AND FIELD3 = :c_constant
ENDEXEC.
WITH(READPAST)
の直後に追加しようとすると、次のFROM MY_TABLE
エラーが発生します。READCOMMITTEDまたはREPEATABLEREAD分離レベルでのみREADPASTロックを指定できます。
OPEN ritc
十分に公平です:私は次の行の直前にこのコマンドを追加しようとしました:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
これにより、別のエラーが発生します。FETCH
このブロックの後の最初のコマンドで、カーソルritc
が存在し、すでに開いているというエラーメッセージが表示されます。
この時点で、ネイティブSQLブロックにテーブルヒントを追加できるかどうかさえわかりませんか?
助言がありますか?前もって感謝します。