<?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>DB &gt;&gt; Oracle</title><link>http://blogs.wankuma.com/pinzolo/category/726.aspx</link><description>DB &gt;&gt; Oracle</description><managingEditor>THREE-ONE</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>THREE-ONE</dc:creator><title>Dictionary.Exists と oo4o で奇妙な現象</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/09/17/156760.aspx</link><pubDate>Wed, 17 Sep 2008 11:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/09/17/156760.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/156760.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/09/17/156760.aspx#Feedback</comments><slash:comments>140</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/156760.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/156760.aspx</trackback:ping><description>oracle は Oracle へのデータアクセスオブジェクトです。&lt;br /&gt;
tbl テーブルの key 列には foo が格納されています。
&lt;textarea name="code" class="VB"&gt;
Set table = CreateObject("Scripting.Dictionary")
table.Add "foo", "bar"
SQL = "select key from tbl"
Set records = oracle.CreateDynaset(SQL, &amp;H0)
table.Exists("foo") ' True
table.Exists(records("key")) ' False（なんで？）
table.Exists(CStr(records("key"))) ' True
key = records("key")
table.Exists(key) ' True
VarType(records("key")) ' 8 = vbString
&lt;/textarea&gt;
なぜこうなるのかよくわかりません&lt;br /&gt;
もともと VBScript の型ではない Dictionary のメソッドだから、型変換されずに渡されてしまうのでしょうか？&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/156760.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>一応エラーは出なくなった</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121386.aspx</link><pubDate>Tue, 05 Feb 2008 17:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121386.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/121386.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121386.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/121386.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/121386.aspx</trackback:ping><description>&lt;A href="http://blogs.wankuma.com/pinzolo/archive/2008/02/01/120439.aspx" target=_blank&gt;コレ&lt;/A&gt;とさっきの&lt;A href="http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121285.aspx" target=_blank&gt;コレ&lt;/A&gt;に関して。&lt;br/&gt;
どうも、END LOOP の直前にラベルを配置するとシンタックスエラーになるらしい。&lt;br/&gt;
なので、END LOOP とラベルの間に意味のない代入処理を加えたらエラーはでなくなった。&lt;br/&gt;
んで、後ほど調べてみると一般的には、何もしない NULL 命令をはさむそうな。&lt;br/&gt;
つまり、こうしなければならんというわけですな。
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;LOOP&lt;/span&gt;
    &lt;span class="rem"&gt;-- do something...&lt;/span&gt;
    &lt;span class="kwrd"&gt;IF&lt;/span&gt; skip_condition &lt;span class="kwrd"&gt;THEN&lt;/span&gt;
        &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; SKIP;
    &lt;span class="kwrd"&gt;END IF&lt;/span&gt;;
    &lt;span class="rem"&gt;-- do something...&lt;/span&gt;
&amp;lt;&amp;lt;SKIP&amp;gt;&amp;gt;
NULL;
&lt;span class="kwrd"&gt;END LOOP&lt;/span&gt;;&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/121386.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>記号"END"が見つかりました</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121285.aspx</link><pubDate>Tue, 05 Feb 2008 17:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121285.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/121285.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/02/05/121285.aspx#Feedback</comments><slash:comments>132</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/121285.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/121285.aspx</trackback:ping><description>そりゃ、あるわい。書いとるんやから。&lt;br/&gt;
「次のうちの1つが入るとき」ってなんじゃー、そこで切るなー入るときどーなんじゃーーーー&lt;br/&gt;
別に Oracle に限ったことじゃないけど、シンタックスエラーのエラーメッセージって理解不能なのが多いよね。&lt;br/&gt;
もう少し親切にならんもんかいね。&lt;br/&gt;
このエラーとかれこれ二時間格闘中。&lt;br/&gt;
どこが間違っとるんかさーっぱりわからん(;;;;;;;;;;;;;;-_-)&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/121285.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>Oracle のループで continue</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/02/01/120439.aspx</link><pubDate>Fri, 01 Feb 2008 20:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/02/01/120439.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/120439.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/02/01/120439.aspx#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/120439.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/120439.aspx</trackback:ping><description>Oracle のループで、いわゆる C# の continue に相当するものってないよね？
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;LOOP&lt;/span&gt;
    &lt;span class="rem"&gt;-- do something...&lt;/span&gt;
    &lt;span class="kwrd"&gt;IF&lt;/span&gt; skip_condition &lt;span class="kwrd"&gt;THEN&lt;/span&gt;
        &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; SKIP;
    &lt;span class="kwrd"&gt;END IF&lt;/span&gt;;
    &lt;span class="rem"&gt;-- do something...&lt;/span&gt;
&amp;lt;&amp;lt;SKIP&amp;gt;&amp;gt;
&lt;span class="kwrd"&gt;END LOOP&lt;/span&gt;;
&lt;/pre&gt;
なので↑のようにやったんだが、普通こうするものなのかどうか気になる。&lt;br/&gt;
goto にいいイメージがないので、他に常套手段があるんじゃないかとすごく不安&lt;BR&gt;&lt;BR&gt;[追記]&lt;BR&gt;web でざくっと調べたけど、こうするもんっぽいな&lt;BR&gt;CONTINUE ぐらい実装してくれてもいいのに&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/120439.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>空だったらデフォルトを挿入</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/01/31/120202.aspx</link><pubDate>Thu, 31 Jan 2008 16:36:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/01/31/120202.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/120202.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/01/31/120202.aspx#Feedback</comments><slash:comments>57</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/120202.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/120202.aspx</trackback:ping><description>&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;INSERT&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;INTO&lt;/SPAN&gt; TBL1 (
     COL11
    ,COL12
)
&lt;SPAN class=kwrd&gt;SELECT&lt;/SPAN&gt;
     COL21
    ,&lt;SPAN class=kwrd&gt;CASE&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;WHEN&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;TRIM&lt;/SPAN&gt;(COL22) &lt;SPAN class=kwrd&gt;IS&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;NULL&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;THEN&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;DEFAULT&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;ELSE&lt;/SPAN&gt; COL22 &lt;SPAN class=kwrd&gt;END&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;FROM&lt;/SPAN&gt;
    TBL2
&lt;/PRE&gt;Oracle にて、こういうことをしたいが無理っぽい。（意味は通じるよね？）&lt;BR&gt;仕方ないのでカーソルまわして、ゴリゴリ文字列連結して一件ずつ execute immediate とかやってる。&lt;BR&gt;INSERT 時に対象の列だけ省いて INSERT し、あとで UPDATE で CASE すればいけるか？？と思ったが、10数個の列のうち主キー指定されているのが10個ほどで、空ならデフォルトにしたい行も主キーに含まれている。&lt;BR&gt;どんなテーブル設計だ！と突っ込みたいが、上から降ってきたものだから仕方がない。&lt;BR&gt;SYS.COL ビューからデフォルト値を取ってくるか！と思ったが、LONG 型を CHAR 型に変換できなくて断念。&lt;BR&gt;どうにか方法はないものか&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/120202.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>複合キーテーブルのDELETE</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/01/08/116379.aspx</link><pubDate>Tue, 08 Jan 2008 10:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/01/08/116379.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/116379.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/01/08/116379.aspx#Feedback</comments><slash:comments>557</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/116379.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/116379.aspx</trackback:ping><description>初めてお仕事で PL/SQL を使ってます。&lt;br/&gt;
もうわからんことばっかです。日々勉強です。&lt;br/&gt;
&lt;br/&gt;
とあるテーブルがありまして、KEY1 と KEY2 が主キーになってます。&lt;br/&gt;
んで、KEY1 が特定の条件のデータだけ削除したいんですよ。
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;
    KEY1
&lt;span class="kwrd"&gt;FROM&lt;/span&gt;
    TABLE1
&lt;span class="kwrd"&gt;WHERE&lt;/span&gt;
    KEY1 = &lt;span class="str"&gt;'HOGE'&lt;/span&gt;
&lt;span class="kwrd"&gt;FOR&lt;/span&gt; &lt;span class="kwrd"&gt;UPDATE&lt;/span&gt;;&lt;br/&gt;&lt;span class="kwrd"&gt;DELETE&lt;/span&gt; &lt;span class="kwrd"&gt;FROM&lt;/span&gt;
    TABLE1
&lt;span class="kwrd"&gt;WHERE&lt;/span&gt;
    KEY1 = &lt;span class="str"&gt;'HOGE'&lt;/span&gt;;
&lt;/pre&gt;
としたいんですが、INTO がねーよと怒られます。&lt;br/&gt;
そこで
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;
    KEY1
&lt;span class="kwrd"&gt;INTO&lt;/span&gt;
    W_KEY1
&lt;span class="kwrd"&gt;FROM&lt;/span&gt;
    TABLE1
&lt;span class="kwrd"&gt;WHERE&lt;/span&gt;
    KEY1 = &lt;span class="str"&gt;'HOGE'&lt;/span&gt;
&lt;span class="kwrd"&gt;FOR&lt;/span&gt; &lt;span class="kwrd"&gt;UPDATE&lt;/span&gt;;&lt;br/&gt;&lt;span class="kwrd"&gt;DELETE&lt;/span&gt; &lt;span class="kwrd"&gt;FROM&lt;/span&gt;
    TABLE1
&lt;span class="kwrd"&gt;WHERE&lt;/span&gt;
    KEY1 = &lt;span class="str"&gt;'HOGE'&lt;/span&gt;;
&lt;/pre&gt;
としたら、今度は「複数件かかるだろ、バーカ」と当然ながら怒られます。&lt;br/&gt;
で、しかたなく
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;FOR&lt;/span&gt; CUR_TABLE1 &lt;span class="kwrd"&gt;IN&lt;/span&gt; (
    &lt;span class="kwrd"&gt;SELECT&lt;/span&gt;
        KEY1,
        KEY2
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt;
        TABLE1
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt;
        KEY1 = &lt;span class="str"&gt;'HOGE'&lt;/span&gt;
    &lt;span class="kwrd"&gt;FOR&lt;/span&gt; &lt;span class="kwrd"&gt;UPDATE&lt;/span&gt;
)
&lt;span class="kwrd"&gt;LOOP&lt;/span&gt;
    &lt;span class="kwrd"&gt;DELETE&lt;/span&gt; &lt;span class="kwrd"&gt;FROM&lt;/span&gt;
        TABLE1
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt;
        KEY1 = CUR_TABLE1.KEY1
    &lt;span class="kwrd"&gt;AND&lt;/span&gt;
        KEY2 = CUR_TABLE1.KEY2
&lt;span class="kwrd"&gt;END LOOP&lt;/span&gt;;&lt;/pre&gt;
みたいなやりかたで削除してます。&lt;br/&gt;
なんか簡単な方法ないんですかね・・・・&lt;br/&gt;
なんで、こんな単純な DELETE 文にカーソル使わなきゃならないんだか。&lt;br/&gt;
&lt;br/&gt;
#「カーソルは最後の手段！！」な自分の考え方がおかしいのか&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/116379.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>PL/SQLの変数名は30バイトまで</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/01/07/116280.aspx</link><pubDate>Mon, 07 Jan 2008 18:01:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/01/07/116280.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/116280.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/01/07/116280.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/116280.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/116280.aspx</trackback:ping><description>32バイトかと思ってたのでメモメモ&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/116280.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>たった 2 文字で 1 時間</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/02/09/61752.aspx</link><pubDate>Fri, 09 Feb 2007 21:39:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/02/09/61752.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/61752.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/02/09/61752.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/61752.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/61752.aspx</trackback:ping><description>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; 
    A.COL1, 
    A.COL2, 
    &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(&lt;span class="kwrd"&gt;DISTINCT&lt;/span&gt; B.COL3) &lt;span class="kwrd"&gt;AS&lt;/span&gt; CNT 
&lt;span class="kwrd"&gt;FROM&lt;/span&gt; 
    TABLE_A &lt;span class="kwrd"&gt;AS&lt;/span&gt; A 
&lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;OUTER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; 
    TABLE_B &lt;span class="kwrd"&gt;AS&lt;/span&gt; B 
&lt;span class="kwrd"&gt;ON&lt;/span&gt; 
    A.COL1 = B.COL1 
&lt;span class="kwrd"&gt;AND&lt;/span&gt; 
    A.COL2 = B.COL2 
&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; 
    A.DEL_FLG &amp;lt;&amp;gt; &lt;span class="str"&gt;'1'&lt;/span&gt; 
&lt;span class="kwrd"&gt;GROUP&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; 
    A.COL1, 
    A.COL2 &lt;/pre&gt;こんな SQL を書いてました。&lt;BR&gt;ところが何度やってもエラーになる。&lt;BR&gt;カンマの過不足とかもないし・・・・&lt;BR&gt;と悩むこと 1 時間。&lt;BR&gt;&lt;BR&gt;Oracle じゃ、列別名の AS はいいけど表別名の AS はエラーなんだってさーーーー。&lt;BR&gt;なんだよそれ&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/61752.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>ついついやっちまうこと in Oracle</title><link>http://blogs.wankuma.com/pinzolo/archive/2006/12/08/49173.aspx</link><pubDate>Fri, 08 Dec 2006 01:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2006/12/08/49173.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/49173.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2006/12/08/49173.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/49173.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/49173.aspx</trackback:ping><description>今まで三年以上 SQL Server を使ってたものでして&lt;BR&gt;言い訳がましい前置きです、ハイ&lt;BR&gt;今のお仕事は Oracle なんですがついついやってしまうことがあります&lt;BR&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;TRIM&lt;/SPAN&gt;(&lt;EXPR&gt;) = &lt;SPAN class=str&gt;''&lt;/SPAN&gt;&lt;/PRE&gt;Oracle には空文字って概念なんてねーっつぅの&lt;BR&gt;正しいのはこーですよー&lt;BR&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;TRIM&lt;/SPAN&gt;(&lt;EXPR&gt;) &lt;SPAN class=kwrd&gt;IS&lt;/SPAN&gt; NULL&lt;/PRE&gt;あと、ついつい COUNT の結果を int で受けてしまう&lt;BR&gt;毎回「キャストでけへんやんけ、ドアホ」と怒られます&lt;BR&gt;decimal なんだよねぇ・・・・&lt;BR&gt;整数以外ありえないんだし int でいいじゃん・・・・・・&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/49173.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>