ホルン吹きでSEなブログ

趣味でホルン吹き、仕事でSEやってます

ストアドプロシージャの話

f:id:t910827:20170808195532p:plain

 

こんにちは。

タイトルについて。

 

いまの現場で、初めてのストアドを作成中です。

「ストアド?ふつうのSQLと同じでしょw」

みたいな認識でしたが、

 

全然違いました!

 

今までの認識と違った点

(※今まで=javaiBatisでの書き方)

 

項目 今まで ストアド(PL/SQL) 備考
変数への代入方法 変数 = 123 変数 := 123 なにこのコロン!
WHERE句
文字列型変数の扱い
WHERE
ID = 変数
WHERE
ID =
'''' ||変数 || ''''
文字列連結の時、
シングルクォートを明示する
文末の書き方 特に意識せず セミコロン必須 プログラムと同じ感じ
IF文の書き方 IF(true){
} ELSE{
}
IF true THEN
ELSE
END IF;
ここで終わるよって
明示しなきゃダメ
引数の書き方 classA(String name){
...
}
sampleProc(
CHAR
IN name
}
IN、OUT
INOUTのどれかを書く
変数の定義 String name = new String(); name CHAR(100); サイズを指定をする
SQLの実行方法 dao.executeQuery();
みたいな
execute immediate SQL変数;または
SELECT ▽△ FROM TABLE を
一行で書く
お作法の違いかな

 

動作環境がSQLServerか、Oracleでも色んな違いがありました。

 

...というのも、

今のお仕事がSQLServeからOracleへのストアド焼き直しなのです。

 

 

全部コピペで追加仕様だけあとで書けばいいや」

f:id:t910827:20170808202950p:plain

( ゚Д゚)

 

どこでエラーなんか書けやゴラアァァ!!!!(;゚Д゚)

 

なんてことになりました。

サボれなかったよ...。

 

この辺はググって、「なんとなくこれっぽいな」で書いたらコンパイルエラーが解消されました。

うーむ。楽しい。

 

↓参考にさせていただいたページ

el.jibun.atmarkit.co.jp

 

d.hatena.ne.jp