- Goal
XMLファイルからテーブルの要素を抜き出して、INSERTしたい。
SQLServer バージョン
- How
xqueryを使って実施。
Oracle Application Express Notes | Apps development Notes | Google Cloud Platform | Python | apps test | Cool Beans | English | Books
2017/02/08
2017/01/30
特定の文字の間の文字を切り出す - SQL
- Goal
文字列から特定の文字の間の文字を抜き出す
(例) 1234567890123 Hello 0980 982134 1adfllkjasf から1つ目の空白と 2つ目の空白の間の文字列を抜き出す。
結果として、Helloだけを抜き出す。 - Source
2017/01/28
BOM構成表情報を取得するAPI
- Goal
BOMPEXPL.EXPLODER_USEREXITを呼び出して、BOM_EXPLOSION_TEMPテーブルに出力させる。APEXのアプリから、EBSのBOM構成表を呼び出したりできる。
INTENDED BILLの画面と同じ情報を引っ張ってこれる。
- Sourceサンプル
2017/01/27
オラクル スケジューラー テンプレ
- Goal
DBMS_SCHEDULERパッケージを使って、PL/SQLブロックや、プロシージャのスケジュールを作る。Oracle Schedulerを使う。
- Sourceサンプル
Sample1 - PLSQLブロックを5時57分から23時57分まで、毎時間流すSample2 - プロシージャを2時間おきに流す - 参考 Thanks!!
Oracle Scheduler マニュアル
2016/09/25
2016/09/24
CHECKBOX(チェックボックス)のハンドリング - 目次 - APEX
APEX上でのCHECKBOX(チェックボックス)のハンドリング方法
Table of contents
1.他のテーブルとのマッチングのやりかた
(1列文字列から1行テーブルへ変換)
2.検索する/フィルターをかける
Background
APEXでチェックボックスを使う、コロン(:)区切りの文字列で値が帰ってくる。
それをどう扱うのか?というメモ...
(例)
ラベル:
APEX,
Dev Tips,
Oracle application express,
Oracle DB,
sql
2016/07/09
同一グループ内の1件目を抜き出す SQL
- Goal
同一グループ内の一番上のレコードだけをSQLで抜き出す。
例えば、売上明細から品番別の最も売上件数が多かった年月を抜き出す。
アウトプットは、<品番>、<最も売上が上がった年月>、<その年月の売上件数> - How
1. 月別に売上件数をサマリー
2. ROW_NUMBER()で、一番売上件数が多かった月に'1'をセット
3. ROW_NUMBER()が'1'だけを抜き出す
- Source
2016/06/26
オブジェクトの名称はすべて小文字にしておくこと - Postgresql
"Postgresqlでは、オブジェクト(テーブル名、カラム名)の名称はすべて小文字にすること"
-理由
DB内には、大文字・小文字で区別して登録される
SQL内では、"(ダブルクォーテーション)で囲まれているとそのままの文字列だが、
囲まれていないと小文字に変換される(らしい)
結果、アンマッチがおきる
-理由
DB内には、大文字・小文字で区別して登録される
SQL内では、"(ダブルクォーテーション)で囲まれているとそのままの文字列だが、
囲まれていないと小文字に変換される(らしい)
結果、アンマッチがおきる
--------------------------------------------------------
testdb=> \d iris
Table "public.iris"
Column | Type | Modifiers
---------------+-----------------------+-----------
Id | integer | not null
SepalLengthCm | numeric(15,2) |
SepalWidthCm | numeric(15,2) |
PetalLengthCm | numeric(15,2) |
PetalWidthCm | numeric(15,2) |
Species | character varying(20) |
Indexes:
"iris_pkey" PRIMARY KEY, btree ("Id")
testdb=> select * from iris where SepalLengthCm > 5.0; -> ダメ
ERROR: 列"sepallengthcm"は存在しません
LINE 1: select * from iris where SepalLengthCm > 5.0;
^
HINT: Perhaps you meant to reference the column "iris.SepalLengthCm".
testdb=> select * from iris where "iris.SepalLengthCm" > 5.0;->ダメ
ERROR: 列"iris.SepalLengthCm"は存在しません
LINE 1: select * from iris where "iris.SepalLengthCm" > 5.0;
^
testdb=> select * from iris where "SepalLengthCm" > 5.0; -> OK
testdb=> select * from iris where iris."SepalLengthCm" > 5.0; -> OK
testdb=>
2016/06/25
Virtualbox上のUbuntu16.4にPostgresql 9.5をインストールする
MACのVirtualbox上のUbuntu16.4にPostgresql9.5をインストールする。
以下のSTEPをサーバー上で行う。(SSHでも可能)
#1# インストール
#2# Postgresqlを開始する
#3# postgresの初期パスワードを設定する
#4# postgres でログインして、DB作成と別userでもログインできるようにする
#5# クライアントからの接続を許可する
## pg_hba.confのセッティングについては、以下参考
-postgresqlのページ
https://www.postgresql.jp/document/9.5/html/auth-pg-hba-conf.html
以下のSTEPをサーバー上で行う。(SSHでも可能)
#1# インストール
#2# Postgresqlを開始する
#3# postgresの初期パスワードを設定する
#4# postgres でログインして、DB作成と別userでもログインできるようにする
#5# クライアントからの接続を許可する
## pg_hba.confのセッティングについては、以下参考
-postgresqlのページ
https://www.postgresql.jp/document/9.5/html/auth-pg-hba-conf.html
2016/06/14
buffer overflow. Use SET command to reduce ARRAYSIZE or increase MAXDATA.
- 状況
SQL*PLUS でSQL実行時に、エラーメッセージ”buffer overflow. Use SET command to reduce ARRAYSIZE or increase MAXDATA.”が表示される。
環境 ー 古いんです (^^;
SQL*Plus: Release 3.3.4.0.0 - Production on Mon Jun 13 10:56:36 2016
Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production
SQL> select * from v$version;
BANNER----------------------------------------------------------------Oracle8i Enterprise Edition Release 8.1.7.4.0 - ProductionPL/SQL Release 8.1.7.4.0 - ProductionCORE 8.1.7.0.0 ProductionTNS for Solaris: Version 8.1.7.4.0 - ProductionNLSRTL Version 3.4.1.0.0 - Production - Solution
SQL> SET ARRAYSIZE 1
上記を実行の上、SQLを実行する。
2016/06/09
2016/05/10
UPSERT のサンプル - データがあればUPDATE、なければINSERT
- Goal
データがあればUPDATE、なければINSERTする。
APEXのダイナミックアクションでの利用を想定しており、ボタンをクリックした際にプロシージャで呼び出して、テーブルのUPSERTをする。 - How
Merge文を使う
COLUMN1-4がキーで、FlagをUPSERTする
- Source
2016/05/06
前年同月比較、前月比較 - 売上日報 SQL
- Goal
セールス別に、当月の売上、前年同月、前月を横並びで表示する。レポートのタイミングはオンデマンドを想定しているので、売上明細からSQLで取り出しを行う。 - How
1. 月別グルーピング用のフラグを、明細に追加
2. DECODE文で、必要な値だけサマリー(条件付きサマリー)
3. GROUP BY ROLLUP で、合計行 を追加
- Source
#ちょっと今月売上良すぎだけど...
2016/04/28
SQL serverからOracleへのデータ移行時の文字列ハンドリング
SQL Server からOracleDBへのデータ移行時に、改行、TAB、"(ダブルクォーテーション)のハンドリングのサンプル
1.NTEXT型から、VARCHAR型へ変換
2.改行(Carriage Return) は、スペースへ変換
3."(ダブルクォーテーション) は、 シングルクォーテーションに変換
そのあと、文字列カラムを"(ダブルクォーテーション)区切りで出力し、OracleDBへロードする
1.NTEXT型から、VARCHAR型へ変換
2.改行(Carriage Return) は、スペースへ変換
3."(ダブルクォーテーション) は、 シングルクォーテーションに変換
そのあと、文字列カラムを"(ダブルクォーテーション)区切りで出力し、OracleDBへロードする
- Source
2016/04/23
VIEWのデータが表示されない
- 状況
TOADやSQL Developer経由で、OracleEBSデータベースへ接続時VIEWの結果が返ってこない。(ビューは表示されるが、データがない。) - 原因
US設定のOracleEBSに対して、クライアント側NLSの設定がJapanese設定なのが原因
(NLSの不一致が原因?) - Solution
レジストリ上のNLSの設定を変更する。
1. 接続先Oracle EBSの設定を確認する
2. クライアントの設定をあわせる(自分のPCのレジストリを変更する)
-1 regedit.exe を起動する
-2 HKEY_LOCAL_MACHINE / SOFTWARE / ORACLE / KEY_OraClient11g_home2
(クライアントのインストールの仕方に依存)
-3 "NLS_LANG" を接続先のOracleEBSの設定に合わせる
"LANGUAGE"_"TERRITORY"."CHARACTER SET"
例:set NLS_LANG = AMERICAN_AMERICA.UTF8
#Resource - Thanks!!
https://www.ibm.com/support/knowledgecenter/SS6QYM_9.1.0/com.ibm.help.foundation.install.doc/t_ConfiguringTheNLS_LANGParameterForAnOracleClient.html
#レジストリの変更はリスクを伴います。自己責任にて実施ください。
PL/SQLからテキストファイルへ出力
UTL_FILEを使ってPL/SQLからテキストファイル出力する場合のサンプルコード。
固定長、CSVともに、SQLで整形して出力可能。
SQLPLUS & SPOOLの代替案。
固定長、CSVともに、SQLで整形して出力可能。
SQLPLUS & SPOOLの代替案。
- Source
2016/04/01
カラムの定義が変更できない - ALTER TABLEで変更する
SQL serverのテーブル内のカラム定義をMicrosoft SQL server Management Studio で変更しようとするとエラーになる。
その場合は、ALTER TABLEにて変更すること。
その場合は、ALTER TABLEにて変更すること。
2016/03/23
UTL_SMTP のサンプル - PL/SQLからEmail送信
UTL_SMTPを使ってPL/SQLからEmail送信する場合のサンプルコード。
APEXからメールするならAPEX_MAILの方が簡単。
APEXからメールするならAPEX_MAILの方が簡単。
- Source
2016/03/22
登録:
投稿 (Atom)


