問題タブ [sqlbindparameter]
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.
php - PHP bind_param が機能しない
PHP 経由で MySQL にアクセスしようとしていますが、これらのエラー メッセージが表示されます。
Notice: 未定義の変数: stmt in /var/www/contact.php 行 60
致命的なエラー: 63 行目の /var/www/contact.php の非オブジェクトに対するメンバー関数 bind_param() の呼び出し
私のコード:
sql - Oracle11g は、クエリの実行中にステートメントを再計画できますか?
知られているように、Oracle 11gIS_BIND_SENSITIVE
にはとがあります。IS_BIND_AWARE
IS_BIND_AWARE
- SQLクエリが開始される前に、SQLクエリの実行計画を強制的に再構築するIS_BIND_SENSITIVE
- DBMS は、 SQL クエリが開始される前に、SQLクエリの実行計画を再構築するかどうかを決定します。
しかし、Oracle11g は SQL クエリの実行時に直接実行計画を再構築しますか?
たとえば、Oracle は長い間 NLJ (Nested-Loop Join) のインデックス ルックアップを実行しており、クエリ実行の途中でこの戦略をキャンセルして HJ (Hash Join) を実行することを決定します。Oracle11g はこれを行うことができますか? はいの場合、どのような設定でできますか?
sqlbindparameter - ODBC がテーブルから値を返さない
odbc を介して正しい値を取得するのに問題があります。テーブルに格納された値を変数 rezervovani に返す代わりに、odbc は値 -858993460 を返します。sqlbindparameter で間違ったデータ型を使用していると思われますが、どこにあるのかわかりません。
DSN 接続文字列は、エラー レポートと同様にコードから削除されます。アドバイスをください。
c++ - ODBC、C++ の使用中にテーブル値パラメーターをバインドするときにエラーが発生しました
ODBC を使用して、テーブル値パラメーターをストアド プロシージャのパラメーターとして渡そうとしています。MSDN の例に従いましたが、SQLBindParameterを呼び出すと次のエラーが表示されます。
HY004 [Microsoft][ODBC SQL Server Driver]無効な SQL データ型
これが私のコードです。
MSDN でもこれを見つけました。
テーブル値パラメーター列は、SQL_SS_TABLE 型としてバインドできません。ParameterType を SQL_SS_TABLE に設定して SQLBindParameter を呼び出すと、SQL_ERROR が返され、SQLSTATE=HY004、「無効な SQL データ型」で診断レコードが生成されます。これは、SQLSetDescField および SQLSetDescRec でも発生する可能性があります。
しかし、テーブルの列ではなく、テーブルの項目をバインドしようとしています。これは、コード例で述べられていることとほとんど矛盾しているようです。このエラーが発生する理由がわかりません。何か案は?
どうもありがとう。
database - SQLBindParameterを使用してdatetime2(SQL_C_TYPE_TIMESTAMP)をバインドするにはどうすればよいですか?
SQL_TYPE_TIMESTAMP
以下のように、データ型にSQLBindParameter を使用して datetime2 パラメータをバインドしようとしています
SQLBindParameter(hStmt, 7, SQL_PARAM_INPUT, SQL_C_TYPE_TIMESTAMP, SQL_TYPE_TIMESTAMP, 0, 0, &datetime2, 0, NULL);
これも試しました:
rc = SQLBindParameter(hStmt, 8, SQL_PARAM_INPUT, SQL_C_TYPE_TIMESTAMP, SQL_TYPE_TIMESTAMP, SQL_TIMESTAMP_LEN + 1, 7, &rec.datetime2, 0, NULL);
rc は 0 です
クエリ (INSERT)
SQLExecDirect(hStmt, const_cast<wchar_t*>(query.c_str()), SQL_NTS);
を実行すると、日時フィールドのオーバーフローを示す 22008 sqlstate エラーが発生します。
このデータ型のサンプル コードを探しましたが、動作する例が見つかりませんでした。この型の解決策を持っている忍者はいますか? 精度 7 の SQL_TYPE_TIME では問題ありません。
biztalk - MSDTC トランザクション マネージャーは、AmbientTransaction を使用してトランザクションをプッシュできませんでした
テーブルのクエリと更新を行うストアド プロシージャを呼び出す BizTalk ソリューションがあります。負荷分散されたサーバーでソリューションをテストするたびに、このエラーが発生しているようです。
アダプターは、URL "mssql://server//StoredProc?" の送信ポート SQLAdapter_Sendport へのメッセージの送信に失敗しました。この送信ポートに指定された再試行間隔の後に再送信されます。
詳細: System.Transactions.TransactionManagerCommunicationException: 基になるトランザクション マネージャーとの通信に失敗しました。
System.Runtime.InteropServices.COMException: 通信の問題により、MSDTC トランザクション マネージャーはトランザクションを送信先のトランザクション マネージャーにプッシュできませんでした。考えられる原因は次のとおりです。ファイアウォールが存在し、MSDTC プロセスの例外がない、2 台のマシンが NetBIOS 名で互いを検出できない、またはネットワーク トランザクションのサポートが 2 つのトランザクション マネージャーのいずれかで有効になっていない。
HRESULT からの例外:
System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize, Byte[] whereabouts, Int32& cookieIndex, UInt32& cookieSize, CoTaskMemHandle& cookieBuffer)
で System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) からの例外: 0x8004D02A) )
--- 内部例外スタック トレースの終了 ---
以下のように DTC プロパティを設定する必要があるという記事をいくつか読みました。これらは、BizTalk と SQL Server の両方で既に設定しています。
また、Windows ファイアウォールに DTC を追加する必要があります。
最後に、Send Port プロパティの useAmbientTransaction が True に設定されている場合、上記のエラーが引き続き発生します。
しかし、useAmbientTransaction を False に設定すると、メッセージは SQL で成功します。
特にストアド プロシージャに Update と Delete が含まれている場合、Microsoft は useAmbientTransaction を False に設定することを推奨していないという記事を読んだことがあります。しかし、私のソリューションでは、ストアド プロシージャで削除と更新を使用しているため、useAmbientTransaction を True に設定する必要があります。しかし、そうすると、「MSDTC トランザクション マネージャーはトランザクションを宛先にプッシュできませんでした...」というエラーが引き続き発生します。
これに対する可能な解決策を提案してください。
db2 - 可変長文字列を持つ SQLBindParameter
SQLBindParameter を使用して、文字列の配列を DB2 の VARCHAR フィールドにメモリ効率の良い方法で書き込むにはどうすればよいでしょうか?
DB2ドキュメントの例はこれを行います
私はそれを問題なく動作させることができますが、実際の長さに関係なく各文字列が 256 文字 (+null-terminator) を使用して格納されるため、あまり効率的ではありません。より一般的には、1 つの非常に長い文字列 (たとえば 500 文字) があり、他のすべての文字列が 1 文字である場合でも、[NUM_STRINGS][500] のサイズの 2 次元配列が必要になり、大量のメモリが浪費されます。
私がやりたいことは、 SQLBindParameter に次のような配列を渡すことです
配列の各要素は文字列を指します。各文字列は必要なスペースのみを使用するため、これはメモリ効率が高くなりますが、SQLBindParameter を使用して動作させる方法がわかりません。どんな助けでも大歓迎です。
注: 任意の DB に対する一般的な回答は素晴らしいものですが、DB2 に固有の回答も役立ちます。
私が取り組んでいるサイズには、長さが大きく異なる数百万の文字列が含まれているため、メモリ効率が重要な要素です。
私は実際に Linux で DB2 を使用していますが、この特定のユースケースについては、DB2 for z/OS のドキュメントにある唯一の例を見つけることができました。ただし、メモリ使用量の問題を除いて、正しく機能します。