<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>SQL</title><link>http://blogs.wankuma.com/masaru/category/2137.aspx</link><description>SQL</description><managingEditor>まさる（高野 将、TAKANO Sho）</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>まさる（高野 将、TAKANO Sho）</dc:creator><title>わんくまサイトでSQL Server Compact 4.0を使いたい　～その３～</title><link>http://blogs.wankuma.com/masaru/archive/2011/01/26/196685.aspx</link><pubDate>Wed, 26 Jan 2011 23:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2011/01/26/196685.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/196685.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2011/01/26/196685.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/196685.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/196685.aspx</trackback:ping><description>&lt;p&gt;中さんからtwitterで&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;@masaru_b_cl web.config拝見しましたが、参照設定がされてませんね&lt;/p&gt; &lt;p&gt;&lt;a href="http://twitter.com/#!/nakawankuma/status/30183277180489729"&gt;http://twitter.com/#!/nakawankuma/status/30183277180489729&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;と指摘されたので、いろいろと見直して、コンパイルエラーが解消し、実行時エラーとなるところまで持って行けたのでメモ。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;プロジェクトの構成&lt;/h3&gt; &lt;p&gt;次のような形になります。&lt;/p&gt; &lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_1483C/image.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_1483C/image_thumb.png" width="359" height="501"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ポイント：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;App_DataフォルダにSQL Server Compact DBファイル（*.sdf）を配置する。  &lt;li&gt;Binフォルダの配下に、SQL Server Compact 4.0のインストールフォルダのPrivateフォルダ（%ProgramFiles%\Microsoft SQL Server Compact Edition\v4.0\Private）にある、以下のファイルをコピーする。  &lt;ul&gt; &lt;li&gt;System.Data.SqlServerCe.dll  &lt;li&gt;JA\System.Data.SqlServerCe.resources.dll（※エラーメッセージなどの日本語化のため。無理していれなくてもいい）  &lt;li&gt;x86フォルダの中身全部  &lt;ul&gt; &lt;li&gt;SQL Server Compact 4.0のランタイム？&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Web構成ファイル（Web.config）の設定&lt;/h3&gt; &lt;p&gt;次にweb.configに次のように記述します。&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1298638c-3dab-4441-970e-42a26ad40f03" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.data&amp;gt;
    &amp;lt;DbProviderFactories&amp;gt;
      &amp;lt;remove invariant="System.Data.SqlServerCe.4.0"/&amp;gt;
      &amp;lt;add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe"/&amp;gt;
    &amp;lt;/DbProviderFactories&amp;gt;
  &amp;lt;/system.data&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;compilation debug="true" targetFramework="4.0"&amp;gt;
      &amp;lt;assemblies&amp;gt;
        &amp;lt;add assembly="System.Data.SqlServerCe"/&amp;gt;
      &amp;lt;/assemblies&amp;gt;
    &amp;lt;/compilation&amp;gt;
    &amp;lt;customErrors mode="Off" /&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ポイント：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;system.web ? compilation ? assemblies要素の中に、add要素でSQL Server Compact 4.0のアセンブリ名を追加する。 
&lt;ul&gt;
&lt;li&gt;Version, Culture, PublicKeyTokenを指定すると、GACを探しに行ってしまうのか、どうもうまくいかなかったので、アセンブリ名のみとしています。&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;DbProviderFactoriesのtypeNameには、上記addで指定したアセンブリ名と同じ名前を指定する。&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Webページ&lt;/h3&gt;
&lt;h4&gt;Default.aspx&lt;/h4&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:11b59287-0668-4a68-9506-d443b5991af8" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;

&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;

&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
  &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;form id="form1" runat="server"&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;asp:GridView ID="GridView1" runat="server"&amp;gt;
    &amp;lt;/asp:GridView&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Default.aspx.vb&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7f062186-ae12-42da-a48a-245c1824b043" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="vb"&gt;Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlServerCe

Partial Class _Default
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    Dim factory = DbProviderFactories.GetFactory("System.Data.SqlServerCe.4.0")
    Using conn = factory.CreateConnection()
      conn.ConnectionString = "Data Source=|DataDirectory|\Database.sdf"
      Using da = factory.CreateDataAdapter()
        Using cmd = factory.CreateCommand()
          cmd.Connection = conn
          cmd.CommandText = "select 1"
          da.SelectCommand = cmd

          Dim dt As New DataTable()

          da.Fill(dt)

          GridView1.DataSource = dt
        End Using
      End Using
    End Using

    Page.DataBind()

  End Sub
End Class
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ポイント：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Imports句で、「System.Data.SqlServerCe」名前空間をインポートする。 
&lt;li&gt;DbProviderFactoryのコンストラクタで、web.configで記述した”System.Data.SqlServerCe.4.0”を指定する。 
&lt;li&gt;ConnectionStringは"Data Source=|DataDirectory|\Database.sdf" 
&lt;ul&gt;
&lt;li&gt;|DataDirectory|はApp_Dataフォルダのこと 
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/shiba-yan/20110103/1294060564"&gt;接続文字列の書き方をまとめてみる - まめしば雑記&lt;/a&gt;を参考にさせていただきました。 
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/shiba-yan/"&gt;id:shiba-yan&lt;/a&gt;++&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;実行&lt;/h3&gt;
&lt;p&gt;ローカルIISに配置したら問題なく動作して、次のような画面が表示されました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_1483C/image_3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_1483C/image_thumb_3.png" width="363" height="178"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;うまくいったので、わんくまサイトにFTPでコピーして動作させてみたところ、次のような実行時エラーとなりました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_1483C/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_1483C/image_thumb_4.png" width="644" height="396"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;「Access to the database file is not allowed.」なので、アクセス権の問題かなーと思うんですが、FTPの属性変更では変更できないようで、ここで行き詰まってしまいました。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;とりあえず、大分前進した感じですが、どげすんべやといったところです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/196685.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる（高野 将、TAKANO Sho）</dc:creator><title>わんくまサイトでSQL Server Compact 4.0を使いたい　～その２～</title><link>http://blogs.wankuma.com/masaru/archive/2011/01/25/196666.aspx</link><pubDate>Tue, 25 Jan 2011 23:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2011/01/25/196666.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/196666.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2011/01/25/196666.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/196666.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/196666.aspx</trackback:ping><description>&lt;p&gt;中さんから「手元のIISでやってみてうまくいきますか？」とコメントいただいたので、やってみましたが動いちゃいます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;というわけで、web.configに以下の内容を加えてエラーの内容を見てみます。&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1994ac3b-3e44-48b6-812a-60eb20f92fee" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;  &amp;lt;system.web&amp;gt;
    &amp;lt;compilation debug="false" strict="false" explicit="true" targetFramework="4.0" /&amp;gt;
    &amp;lt;customErrors mode="Off" /&amp;gt;
  &amp;lt;/system.web&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;んで、表示されたのが次の内容。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_142F1/image.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/SQL-Server-Compact-4.0-_142F1/image_thumb.png" width="1028" height="244"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;なんとなく、「"System.Data.SqlServerCe”という名前でアセンブリ探しに行ったら、SQL Server Compact Edition 3.5のが見つかった」みたいな感じなのかな？&lt;/p&gt;
&lt;p&gt;SQL Server Compact 4.0を入れたマシンのIISだと、4.0のアセンブリがGAC（Global Assembly Cache）に登録されるので、問題なく動作すると予想。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;そんなわけで、まだ使えず・・・&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/196666.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>現在開いているsqlファイルをSQL*Plusで実行する秀丸マクロ</title><link>http://blogs.wankuma.com/masaru/archive/2009/08/06/179862.aspx</link><pubDate>Thu, 06 Aug 2009 05:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2009/08/06/179862.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/179862.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2009/08/06/179862.aspx#Feedback</comments><slash:comments>814</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/179862.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/179862.aspx</trackback:ping><description>&lt;p&gt;＃twitterでつぶやいたら案外好評だったので、blogでも紹介。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;PL/SQLのプログラミングを行っている場合、「ファイルを編集→SQL*Plusでコンパイル」という流れを繰り返し繰り返し行うことになりますが、案外面倒ですよね？&lt;/p&gt; &lt;p&gt;そこで私は、秀丸上からSQLの実行を行い、その結果を秀丸上に書き戻すマクロを作成して使っていました。このマクロを実行すると、対象となるOracle接続をリストから選択して実行できます。&lt;/p&gt; &lt;p&gt;私はこのマクロと組み合わせて、テストデータ作成用SQL、パッケージコンパイル用SQL、テスト用SQLを作成して繰り返し繰り返しTDDっぽくPL/SQLの開発を行っています。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;ハードコピー&lt;/h3&gt; &lt;h4&gt;実行時&lt;/h4&gt; &lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/sqlSQLPlus_4B89/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/sqlSQLPlus_4B89/image_thumb.png" width="556" height="272"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h4&gt;実行結果&lt;/h4&gt; &lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/sqlSQLPlus_4B89/image_3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/sqlSQLPlus_4B89/image_thumb_3.png" width="649" height="429"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;※「9:その他」選択時は、接続文字列を手入力できます。&lt;/p&gt; &lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/sqlSQLPlus_4B89/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/sqlSQLPlus_4B89/image_thumb_4.png" width="330" height="141"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;ソース&lt;/h3&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5604ac23-9d92-4335-9642-7981c3fa41d4" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;// =============================================== //
// SQL*PlusによるSQL実行マクロ
//   作成者   ：まさる
//              http://blogs.wankuma.com/masaru/
//   作成日   ：2009/08/04
//   Version  ：1.0
//
//   [注意書き]
//     自由に使ってもらってもかまいませんが、自己責任でお願いします。
//     変なことになっても責任は負いかねます&amp;lt;(__)&amp;gt;
//     なお、てきとーに改変してもらっても構いません。
// =============================================== //

// 変数初期設定
#menuArrayCnt = 0;

// ファイルが更新されているかチェック
if ( filename2 == "" || updated ) {
	// ファイルのセーブ
	save;
	// 保存処理結果判断
	if ( result == false ) {
		endmacro;
	}
}

// メニュー配列項目設定
// 以下の形式で必要な行を追加してください
// call SetMenuArray str(#menuArrayCnt+1) + " : (メニューに表示する文字列)", "user/pass@tnsname";
call SetMenuArray str(#menuArrayCnt+1) + " : SCOTT",  "SCOTT/BASE@ORCL";
call SetMenuArray "9 : その他",   "";

// メニューから選択
menuarray $menuArray[0], #menuArrayCnt;

// 選択されたメニューを判断
if ( result == 0 ) {
	// 選択されなかったらマクロ終了
	endmacro;
} else if ( $menuArray[1][result - 1] != "" ) {
	// 選択されたメニューのスキーマの接続文字列を設定
	$connectionString = $menuArray[1][result - 1];
} else {
	// 接続文字列を入力させる
	$connectionString = input("接続文字列を入力してください。","user/pass@tnsname");
	// 入力されなかったらマクロ終了
	if ( $connectionString == "" ) {
		endmacro;
	}
}
// 実行文字列生成
$runstr = "sqlplus " + $connectionString + " @\"" + filename2 + "\"";

// 実行
run $runstr;

// マクロ終了
endmacro;

// ----------------------------------------------
// メニュー用配列設定サブルーチン
// 引数：
//   $$1：メニュー表示テキスト
//   $$2：接続文字列
// ----------------------------------------------
SetMenuArray:
	$menuArray[0][#menuArrayCnt] = $$1;
	$menuArray[1][#menuArrayCnt] = $$2;
	#menuArrayCnt = #menuArrayCnt + 1;
	return;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;ダウンロード&lt;/h3&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-6cb647e4f421845b.skydrive.live.com/embedrowdetail.aspx/%e5%85%ac%e9%96%8b/ExecSQL.mac" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h3&gt;おまけ&lt;/h3&gt;
&lt;h4&gt;テスト実行用SQLのひな型&lt;/h4&gt;
&lt;p&gt;無名ブロックを使い、テストコードを実行します。&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:18a21c3a-86aa-4eec-a040-240a93e0b058" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="sql"&gt;SET SERVEROUTPUT ON -- DMBM_OUTPUT.PUT_LINEの結果を標準出力に出力する
SET LINESIZE 1000   -- 1行の長さを1,000バイトにする

DECLARE
  
  -- テストで使用する変数等定義

BEGIN

  DBMS_OUTPUT.PUT_LINE('■処理開始');

  -- テスト処理

  DBMS_OUTPUT.PUT_LINE('■正常終了');

  COMMIT;

EXCEPTION
  ROLLBACK;
  DBMS_OUTPUT.PUT_LINE('■異常終了');
  DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;最終行の"/"の後には改行を入れてください。そうしないとSQL*Plusで無名ブロックが実行されません。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/179862.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>私のSQLフォーマット</title><link>http://blogs.wankuma.com/masaru/archive/2009/04/12/171281.aspx</link><pubDate>Sun, 12 Apr 2009 23:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2009/04/12/171281.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/171281.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2009/04/12/171281.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/171281.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/171281.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/masaru/archive/2009/04/12/171280.aspx" target="_blank"&gt;「SQL Fix」を紹介した&lt;/a&gt;ついでに、私がSQLを書く際のフォーマットをご紹介。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;基本的なルールは、以下の5つ。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;SELECT、FROM、WHEREなどのキーワードは、単品で1行。  &lt;li&gt;「,」、AND、ORなどの接続系のものは行頭に配置。  &lt;li&gt;1カラム1行。  &lt;li&gt;SELECT、UPDATE ～ SET等の後のカラム列挙はインデントなし。  &lt;li&gt;副問い合わせなど()で囲まれた箇所は1レベルインデント。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;具体的な例は以下の通り。（Syntax Hightlighterだとうまく表示できなかったので、ただのpreタグにて）&lt;/p&gt; &lt;blockquote&gt;&lt;pre&gt;SELECT
 IV.Col1
,IV.Col2
,IV.ColName
FROM
 (
  SELECT
   T1.Col1
  ,T1.Col2
  ,T2.ColName
  FROM
   Table1 T1
     INNER JOIN Table2 T2 ON
           T2.Col1 = T1.Col1
       AND T2.Col2 = T1.Col2
  WHERE
      T1.Col1 = 'hoge'
  AND (
          @Fuga IS NULL
      OR  T1.Fuga = @Fuga
      )
  ORDER BY
   T1.DispOrder
 ) IV&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;入社後から6年間。色々と試行錯誤してきて、最終的に今の形に落ち着きました。&lt;/p&gt;
&lt;p&gt;特に2の接続系のものを行頭に持ってくるというのは、仕様変更でカラム追加となった場合、たとえば「,」を行末にしていると、1行変更1行追加となってしまってどうも嫌だったので、1行追加で済む今の形が気に入っています。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;例をあげると以下の通り。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;行末の場合&lt;/h4&gt;
&lt;p&gt;こんなのに&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;SELECT
  Col1,
  Col2
FROM
 ～&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Col3を追加したい&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;SELECT
  Col1,
  Col2,  -- 変更
  Col3   -- 追加
FROM
 ～&lt;/pre&gt;&lt;/blockquote&gt;
&lt;h4&gt;行頭の場合&lt;/h4&gt;
&lt;p&gt;こんなのに&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;SELECT
 Col1
,Col2
FROM
 ～&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Col3を追加したい&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;SELECT
 Col1
,Col2
,Col3  -- 追加
FROM
 ～&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SQLのフォーマットは、結構人によってまちまちで、それぞれこだわりがあって使っているような気がします。&lt;/p&gt;
&lt;p&gt;皆さんはどんなSQLフォーマットを使っていますか？&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/171281.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>ツール紹介：SQLFix</title><link>http://blogs.wankuma.com/masaru/archive/2009/04/12/171280.aspx</link><pubDate>Sun, 12 Apr 2009 22:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2009/04/12/171280.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/171280.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2009/04/12/171280.aspx#Feedback</comments><slash:comments>30</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/171280.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/171280.aspx</trackback:ping><description>&lt;p&gt;Visual Studio のクエリデザイナやSQL Server Management Studio のクエリデザイナで、変な改行やインデントが勝手に入ってしまって困っている皆さん、こんばんは。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;そんなあなたにこのツールを。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.vector.co.jp/soft/win95/business/se266921.html"&gt;SQLFix(Windows95/98/Me / ビジネス)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;使い方は簡単。まず、こーんなふうな適当なSQLをCtrl+Cでクリップボードにコピーして&lt;br&gt;&lt;/li&gt; &lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7c76ea0b-98d8-4e6d-b49e-abbe54b3ec6a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="sql"&gt;SELECT	Table1.HogeColumn, Table1.FugaColulmn,Table1.PayoColumn
FROM	Table1
WHERE	Table1.ID = @ID AND Table1.DelFlg = 0 AND
	Table1.CreateDate &amp;lt; GETDATE()&lt;/pre&gt;&lt;/div&gt;
&lt;li&gt;ダウンロードしたファイルを解凍して出来た、SQLFix.exe を実行する。&lt;/li&gt;
&lt;li&gt;あとはてきとーなところに、Ctrl+Vで貼り付けると、こんな感じで整形されます。&lt;br&gt;&lt;/li&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e503c51e-2ec9-41c7-bcfd-af8c85f5806b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="sql"&gt;SELECT
 Table1.HogeColumn
, Table1.FugaColulmn
,Table1.PayoColumn
FROM Table1
WHERE Table1.ID = @ID
AND Table1.DelFlg = 0
AND Table1.CreateDate &amp;lt; GETDATE()
&lt;/pre&gt;&lt;/div&gt;&lt;/ol&gt;
&lt;p&gt;SQLFix.exeと同じところにある、SQLFix.iniファイルで整形ルールもある程度カスタマイズできるので、非常に重宝しています。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;さぁ、みんなもSQL Fixで、Let's 快適 SQL Life!&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/171280.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>