問題タブ [db2-400]
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.
sql-server - 列ごとの値を行に分割する
列レベルで年と月ごとの値を含むテーブルがあります。
SQL を使用して、現在の月から過去 6 か月の値を取得する必要があります。誰でも助けることができますか?
例えば。過去6か月が必要な場合は、月2と月1の値を持つ今年のレコードと、月12、月11、月10、月9の値を持つ2013年のレコードである必要があります。
stored-procedures - 外部列に基づいてDB2400で変数を宣言することは可能ですか?
DB2/400 のストアド プロシージャで外部記述変数を使用できるかどうかを誰かが知っているかどうか疑問に思っていました。
かなりの数のストアド プロシージャがあり、それらはすべて特定のファイルにアクセスします。最近、フィールド拡張を行ったところ、V7 が SQLSTATE 1004 (可変サイズの違い) をスローしています。ここで、このファイルを参照するすべてのプロシージャを変更し、内部変数に拡張フィールド サイズを使用する必要があります。
理想的には、この定義の外部参照を許可するようにプロシージャーを変更したいので、将来的には、このプロシージャーを再コンパイルするだけで済みます。これは DB2 で可能ですか?
もう少し明確に:
関数 getItemCost(inStore,inItem)
storeVendor 数値 (7,0) を宣言します。vendor_table から storeVendor にベンダーを選択します。ここで、store_number = inStore);
{その他のロジック}
ベンダーの長さを 7 から 10 に拡張する場合、このコードを変更する必要があります。
c# - AS/400の接続方法
Visual Studio c# プログラムを IBM AS/400 上のデータベースに接続するためのアーキテクチャと手順を作成する必要があります。さまざまな可能性を探しています。Rest サービスが最良の選択だと思いますが、AS / 400 に接続する方法をまだ決めていません。これについて経験のある人はいますか? Entity Framework は有効なオプションでしょうか? IBM.Data.DB2.iSeries データ プロバイダーはどうですか? 「単純な」CRUD操作を行う必要があります。許可の問題やユーザーの制限がないローカルネットワークにいます。
sql - iSeries クエリは、サブクエリの結果行の選択された RRN を変更します
数百万行 (おそらく 1 か月あたり最大 300 万行) を格納できる iSeries データベース テーブルに最適な SQL クエリを作成しようとしています。各行について私が持っている唯一のキーは、その RRN (行の物理レコード番号である相対レコード番号) です。
私の目標は、テーブルを別の小さなテーブルと結合して、数値列の 1 つをテキストで説明することです。ただし、関連する行数は 200 万を超える場合があり、通常、メモリ不足の状態が原因でクエリが失敗します。そのため、クエリを書き直して、大きなサブセットを他のテーブルと結合しないようにします。そのため、特定の月に 1 ページ (最大 30 行) を選択し、そのサブセットを 2 番目のテーブルに結合するという考え方です。
しかし、私は奇妙な問題に遭遇しました。次のクエリを使用して、ページに必要な行の RRN を取得します。
このクエリは問題なく機能し、必要な行の正しい RRN を返します。しかし、サブクエリの結果を別のテーブルと結合しようとすると、RRN が変更されました。そのため、結合なしで、クエリを単純な外部クエリ内のサブクエリに単純化しました。
外側のクエリは、RRN を行キーとして使用して、サブクエリによって選択された各行のすべての列を単純に取得します。しかし、このクエリは機能しません。まったく異なる RRN を持つ行が返されます。
後続のクエリでテーブルからより詳細な情報を取得するために使用されるため、実際の RRN が必要です。
RRN が異なる結果になる理由について何か考えはありますか?
解像度
クエリを 2 つの呼び出しに分割することにしました。1 つは単純なサブクエリを発行して RRN (行 ID) のみを返す呼び出しで、もう 1 つは残りの JOIN などを実行して各行の完全な情報を取得する呼び出しです。(テーブルは 1 日に 1 回だけ更新され、行が削除されることはないため、タイミングの問題を心配する必要はありません。)
このアプローチは非常にうまく機能しているようです。
補遺
メモリ不足エラーが発生する理由については、これは一部のテスト サーバーのみの制限のようです。約 2m 行までしか処理できないものもあれば、それ以上を処理できるものもあります。したがって、これは管理者がサーバーごとに課したある種の制限であると推測しています。
.net - SQL0469 IN、OUT、または INOUT は、プロシージャーのパラメーター 2 には無効です
AS400 を実行している IBM iSeries に対してストアド プロシージャを実行しようとすると、タイトルに上記のエラーが表示されます。
System iNavigator ツールからストアド プロシージャを実行するために次のように入力すると、問題なく実行されます。
最初のパラメーター方向はストアド プロシージャで入力として定義され、2 番目のパラメーターは出力として定義され、3 番目は出力として定義されます。
問題は、パラメータを設定する .Net コードからストアド プロシージャを実行しようとしたときです。誰か助けてくれませんか?
私のパラメータリストは次のように設定されています:
解像度
コマンドテキストを次のように宣言する必要がありました。
パラメータを次のように設定する必要がありました。
db2-400 - DB2 AS/400 jtopen-7.1 DatabaseMetaData の変更
jt400 7.1 ドライバーを使用して DB2 AS 400 V6R1m0 に接続しています。7.1 ドライバーでは、IBM はデータベース メタデータ メソッドに変更を加えました。そのような変更の 1 つは、ユーザーが「*USRLIBL」キーワードを使用して現在のスキーマでテーブル名を取得できるようにすることです。同じドキュメントはhttp://sourceforge.net/projects/jt400/files/にあります。
デフォルトでは、「メタデータ ソース」接続プロパティは 1 に設定されており、その場合、スキーマ パターンに null が渡されると、すべてのスキーマからの情報が返されます。ただし、*USRLIBL の特別な値を自分で渡して、目的の結果を得ることができます。
したがって、キーワード「*USRLIBL」を使用してテーブル名をフェッチすると、次のようになります。
これはうまくいっています。
同じパターンを使用してプロシージャ名を取得すると、空のセットが返されます。
getProcedures 呼び出しでキーワード「*USRLIBL」を使用できますか? 「*USRLIBL」の使用が getProcedures() 呼び出しでサポートされているかどうか。または、getProcedures call() を使用しながらスキーマ パターンに null を使用し続ける必要があります。
php - iSeries 変数の 1 つに # 記号がある IBM iSeries への PHP DB2 挿入
db2 データベース拡張機能を使用して、IBM iSeries にデータを挿入するために使用される準備済み SQL ステートメントを作成しています。私が抱えている問題は、iSeries 側の変数名の 1 つに # (ポンド記号/ハッシュ) が含まれていることです。したがって、# が php で有効な文字であると仮定すると、コードは次のようになります。どうすればこれを回避できますか?
物理ファイルには 59 個の変数があり、そのうち 5 個しか使用する必要がないため、この挿入方法を使用したいと考えていました。
sql - 3 QUERY /400 で実行されていることを実行するには、SQL を記述する必要があります。
従来の Query/400 を処理するには、1 つまたは 2 つの論理ビューを作成する必要があります。最初のクエリは、2 番目のクエリに入力される一時ファイルを作成します (2 番目は、3 番目のクエリの一時ファイルを作成します)。目的は、2 番目のクエリで取得した「修正」注文を持っていない顧客を確認することです。
最初のクエリでは、OEINH1 から選択し、Address_Table に一致して顧客の電子メール アドレスを取得し、on を選択します。
これらの列とレコードの選択:
2 番目のクエリは IHENT# (cust #) に一致し、これを選択します。
最初の一時ファイルと同じ OEINH1 の両方のすべての列を 2 番目の一時ファイルに書き込みます。
フィールド名が重複しているため、これを SQL で正確にやり直すのは問題があります。基本的に必要なのは、最初の一時ファイルを取得してから、この顧客が持っている他の 2 つの注文タイプ (COR COE) を取得することだと思います。
この sb このようなもの
これは、query/400 が行っていることに応じて意味がありますか?
最後の QUERY/400 は、結合のタイプに UNMATCHED を使用して 2 つの一時ファイルを比較しています。したがって、どのレコードが最初のパスにあり、2 番目の一時ファイルにはないかを知ることができます。
sql - フラット ファイル SQL が必要 (古いデータの概念)
そのメールアドレスを取得する必要があります。この物理ファイルの定義は次のとおりです。 営業担当者 ID 名 (DMARANO1) を持つ Crystal レポートがあります。担当者の電子メール アドレスを取得して、正しい担当者データでのみレポートを送信できるようにする必要があります。
0025 には営業担当者の名前とコード (コード = DM1) があり、8757 にはそのコード DM1 と電子メールが含まれています。0025 を読み取り、「01」レコードのコードを取得してから、8757 を読み取る必要があります (0075 レコードに一致する DMARANO1 があります)。これは理想的な方法ではありませんが、非常に古い Iseries コードを使用しています。ここ。
ibm-midrange - QTIMZON は DB2 for i で日付/タイムスタンプを変換するために使用されますか?
DB2 for iに関して、タイムスタンプ列はシステム設定 QTIMZON で指定されたタイムゾーンから UTC 0000 に変換されますか? たとえば、QTIMZON が UTC -0400 に設定されている場合、行を挿入する前に UTC 0000 への変換は行われますか?
MySQLとPostgreSQLの両方が UTC との間でオペレーティング システム指定のタイムゾーンに変換するためです。
変換が自動的に行われないと思わせるCURRENT TIMEZONE特殊レジスタを認識していますが、確認したかったのです。