$ cat ./get_sqlresult.sh #!/bin/shvariable=`sqlplus -s / as sysdba << EOF set head off; select sys_context('USERENV','MODULE') from dual; exit; EOF ` echo ${variable} exit 0 $ ./get_sqlresult.sh sqlplus@it-tnga-ap.jp.oracle.com (TNS V1-V3)
![[Oracle]SQL*Plusで返ってきた結果をShellの変数に格納 | IT屋シミダイの頭の中](https://cdn-ak-scissors.b.st-hatena.com/image/square/db7ae9ae68730399814caf8329864187cb9dc3c9/height=288;version=1;width=512/https%3A%2F%2Flibproc.com%2Fwp-content%2Fuploads%2F2017%2F10%2Fbash-148836_1280.png)
PL/SQL の配列 = コレクション型 PL/SQL コレクション型には 大きく分けて PL/SQL 表と VARRAY(可変長配列) が存在する。 PL/SQL 表 PL/SQL 表とは、オラクルのコレクション型の一種。 結合配列(索引付き表) と ネストした表 (NESTED TABLE) が PL/SQL 表と呼ばれている。 昔のオラクルには 索引付き表しかなく、索引付き表はデータベースに格納できず PL/SQL でしか扱えなかったため PL/SQL 表と呼ばれたと思われる。 現在は ネストした表 も PL/SQL 表に含まれているが、こちらは テーブルに格納可能。 PL/SQL 表 という言葉が正確な意味をあらわしていないため、その表現は消えつつある(と思う)。 結合配列 (索引付の表) マニュアルには結合配列と訳されているが、原文では Associative Array (=連
PL/SQLにはTable型というものがあり、これは簡単にいうと「ジェネリック型のリスト」ののような感じです。 declare type listClass is table of 社員%rowtype; list listClass; begin select * bulk collect into list from 社員; end; このように使えるみたいです。次に、このリストを、戻り値として返す例です。 create package foo is -- リスト型の定義 type listClass is table of 社員%rowtype; -- リスト型を返す関数の定義 function bar return listClass; end; create or replace package body foo is function bar return listClass
表関数を手軽に使う活用例(コレクション・ネスト解除) 表関数は select .. table(function_name) のように 表関数の引数に関数の結果を用いる方法 もあるが select .. from table(collection) のように表に格納できるタイプの コレクション型 を用いて コレクションに対して様々な操作をすることも可能である。 (コレクション・ネスト解除、または、コレクション・アンネストと呼ばれる) コレクション型の仮想テーブルに対して SQL 文を使用することで SQL の標準関数を利用することができる =処理プログラムを記述せずに済み SQL の膨大なライブラリ群を利用できる。つまり、配列を使って集計操作、分析関数、グループ化、並び替えまでも利用できるということである。 ここまで簡単に使うことができる表関数(コレクション・ネスト解除)機能であるが、場合
group by group byのソート順 Oracle9iまでは、集計(group by)した場合はソートされる為、order byが不要だった。[2008-10-29] が、これはOracleの独自仕様(内部仕様)だったらしく、Oracle10g以降はソートされるとは限らなくなったらしい。 つまりgroup byであっても、並び順を保証したいならorder byが必須となる。 group byだけでなく、distinctも同様。 OTN掲示板のSQLにてorder by句がない場合 OTN掲示板のGROUP BYによるソート処理存在するか? left join 2つのテーブルを結合(join)する際に、片方にデータが無い場合でも主たるテーブルのデータを全部取ってくるのがleft join(あるいはright join)。[2010-09-01] WHERE句で、従属するテーブル側に「
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 ※10秒後にBIGLOBEのおすすめページに遷移します
PL/SQLでログを取りたい場合とかに実プログラムのトランザクションとは別で ログ用のトランザクションを作成したいときとか結構あると思います。 そんなときはAUTONOMOUS_TRANSACTIONを使うと自律型トランザクションを実装出来ます。 サンプルを書きました。 やってることはログインユーザが持ってるオブジェクト名とタイプをOBJECT_LISTテーブルに1件ずつINSERT して1件ずつログを吐く。 自律型を確認するためOBJCT_LISTへのINSERTはROLLBACKしてみるという簡単なプロシージャ。 ログテーブル CREATE TABLE PLSQL_LOG ( LOG_LEVEL VARCHAR2(10) NOT NULL, LOG_MESSAGE VARCHAR2(100) NOT NULL, REGISTER_DATE TIMESTAMP(6) DEFAULT sy
コンテンツは 2007 年に以下の専用ドメインに移転しました。 https://www.shift-the-oracle.com/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く