問題タブ [callable-statement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jdbc - SQLException: 現在のコンテキストでステートメントを送信できません
プリペアド ステートメントを介してストアド プロシージャを呼び出すときにこの例外が発生しましたが、呼び出し可能なステートメントでは機能します。voltdb でストアド プロシージャを呼び出すために callable ステートメントを使用する必要があるかどうか疑問に思っていますか?
以下の例外をスローします。
これはうまくいきます。
java - 'select from dual' をパラメーターとして Java 呼び出し可能ステートメントに渡す
SELECT FROM DUAL
例のように、Javaの呼び出し可能なステートメントにパラメーターとして渡そうとしています:
この関数を呼び出すと、例外が発生します: ORA-06550: 行 1、列 165: PLS-00103: 次のいずれかを期待するときにシンボル "SELECT" が発生しました: ( - + case mod new not null その他...
function as を呼び出すと正常{?=call function1( ?, ?, ?)}
に動作しますが、別の関数をパラメーターとして呼び出す必要があります (パスワード暗号化など)。
ある関数を別の関数のパラメータとして呼び出す方法はありますか?
java - statement.setArray() を使用して Scala Option[List[_]] を Java JDBC Array に渡す
Scala から JDBC callableStatements へのインターフェースを構築しようとしています。を除いて、ほとんどの場合、それは簡単ですLists
。
何らかのタイプの Scala を取り、List
それを渡せる Java 配列に変換できるようにする必要がありますがstatement.setArray(type, array)
、運がありません (Java と JDBC をよく知らないため)。
これが私がやろうとしていることです:
単純な値の場合は非常に簡単ですが、setArray()
呼び出しに関しては行き詰まっています。
アドバイスをいただければ幸いです。これで何時間も立ち往生...
arrays - NULL (または空の) 配列を JDBC callableStatement (配列を予期する) に渡す方法
配列型を必要とする JDBC ストアド関数 (callable ステートメントを使用) に NULL 値を渡すのに問題があります。これは、IN パラメータを NULL に設定しようとしている場合にのみ問題になります (たとえば、空の配列を作成して渡すことはできますが、そうする必要はありません)。
たとえば、回避策としてこれを行うことができます。
しかし、これは私を悩ませます。まず、NULL 配列を渡すための API があるはずです。第二に、正当な理由もなく空の配列を作成しています (これはワンライナーではないため、正しい配列型を作成する必要があります。いくつかの異なる型をサポートする必要があります)。ぐちゃぐちゃになります。
私はこれを行うことができるはずです(または少なくともかなり似たようなこと):
ただし、例外が発生します。
com.edb.util.PSQLException: エラー: 関数 app_fetch_user_list_pkg.n_execute(文字可変、文字可変[]、文字可変、ブール値、整数) が存在しません
何か案は?(私たちは Postgresql/EDB と Oracle を使用しています...これまでのところ、私は Postgresql インスタンスを試してきました)。
java - Java byte[] を java.lang.Object[] に変換する方法 (JDBC で callableStatement() に渡すため)
byte[]
aを aに変換しようとしていjava.lang.Object[]
ます。基本的に、これはここで説明した逆の問題であり、Scala の callableStatementsに関する私の質問に関連しています (ただし、それとは異なります) 。
結論:byte[]
バイナリ ファイルを表す があります。callableStatement.setObject()
を使用してJDBCに渡す必要がありますが、に変換するcreateArrayOf("byte", objectArray)
方法がわかりません。byte[]
Object[]
これは私が今持っているものです...getBytes()
関数はを返しますがbyte[]
、これはもちろんコンパイラエラーを生成します:
残念ながら、これによりコンパイラ エラーが発生します。
SentimentDao.java:111: エラー: 互換性のない型: バイト [] をオブジェクト [] に変換できません
createArrayOf()
また、最初の引数がそうあるべきかどうかは完全にはわかりませんbyte
(わかっている場合は、それも回答に追加してください)。
ありがとう - 助けていただければ幸いです。
java - MySQL CallableStatement.getObject の動作に一貫性がない
_test_jdbc_inconsistency
開発システムの MySQL のインスタンスで、次の簡単な手順をテスト スキーマ内で定義しています。
しかし、驚いたことに、次の簡単なテストは失敗します
矛盾は最後のassertTrue
ステートメントでフラグが立てられます。parameter-index を受け入れるのオーバーロードを呼び出すと、CallableStatement.getObject
期待される型 ( java.lang.Integer
) の結果が返されますが、 parameter-name を受け入れる他のオーバーロードは、一貫性のない type の結果を返しますjava.lang.Long
。私は符号付き整数を使用しており、JDBC でのout パラメータの使用に関する多くの指示、特にMySQL のドキュメントで提供されているものに基づいているため、プロセスは正しいように見え、これは一貫性のない動作のように見えます。
他の誰かがこの問題を確認できますか?
私の環境:
- Windows 8.1 x64
- JDK 1.8.0_45 (x64/x86)
- MySQL コネクタ/J 5.1.34
- MySQL サーバー 5.6.24
- テストNG 6.9.5
java - Java コードを使用して Oracle ストアド プロシージャを呼び出すとエラーが発生する
Java アプリケーションで PL/SQL プロシージャを呼び出して、データベース エントリを更新しています。
しかし、executeUpdate() で以下のエラーが発生しています
私はどこで間違っていますか?