X



Oracle 質問総合スレ14

0001NAME IS NULL
垢版 |
2019/07/07(日) 16:09:37.68ID:???
◆前スレ
Oracle 質問総合スレ13
https://mevius.5ch.net/test/read.cgi/db/1502506923/

◆過去スレ
Oracle 質問総合スレ12
http://mevius.2ch.net/test/read.cgi/db/1471652805/
Oracle 質問総合スレ11
http://echo.2ch.net/test/read.cgi/db/1437510145/
Oracle 質問総合スレ10
http://peace.2ch.net/test/read.cgi/db/1403674585/
Oracle 質問総合スレ9
http://toro.2ch.net/test/read.cgi/db/1359049907/
Oracle 質問総合スレ8
http://toro.2ch.net/test/read.cgi/db/1335097274/
Oracle 質問総合スレ7
http://toro.2ch.net/test/read.cgi/db/1326074212/
Oracle 質問総合スレ6
http://toro.2ch.net/test/read.cgi/db/1314941245/
Oracle 質問総合スレ5
http://hibari.2ch.net/test/read.cgi/db/1279635842/
Oracle 質問総合スレ4
http://pc11.2ch.net/test/read.cgi/db/1250995281/
Oracle 質問総合スレ3
http://pc11.2ch.net/test/read.cgi/db/1223384283
Oracle 質問総合スレ2
http://pc11.2ch.net/test/read.cgi/db/1194742799
Oracle 質問総合スレ
http://pc11.2ch.net/test/read.cgi/db/1163907455

◆公式サイト
OTN-J
ttp://www.oracle.com/technetwork/jp/index.html

◆オンラインマニュアル
ttp://www.oracle.com/technetwork/jp/indexes/documentation/index.html

◆My Oracle Support
ttp://support.oracle.com/
0616NAME IS NULL
垢版 |
2022/12/18(日) 16:18:38.41ID:???
>>615
で、どこに書いてあるんだ?
具体的に答えられないなら黙ってた方がいいと思うよ
0617NAME IS NULL
垢版 |
2022/12/18(日) 17:55:46.39ID:ixe6oE+R
おしえてクレクレ
0618NAME IS NULL
垢版 |
2022/12/18(日) 17:58:15.65ID:ixe6oE+R
>>616
質問なんだけと、Javaなどのプログラミング言語のString型で参照先がないnullと空文字列に対して、常に空文字列で初期化するタイプなの?
0619NAME IS NULL
垢版 |
2022/12/18(日) 18:01:05.35ID:???
はい逃げた~w
まあそりゃ出せないわな
0621NAME IS NULL
垢版 |
2022/12/18(日) 18:15:53.08ID:ixe6oE+R
Excel VBAでもオブジェクトの破棄をしてなさそう
データがないとわかっていれば、無駄な処理がなくなることを理解していないなら、RDBの説明をしても意味がない

空文字列がNULLになるのではなく、空文字列をNULLと見做す仕様を理解していないままOracleDBを使っているのは頭がおかしいとしか言えない。
0622NAME IS NULL
垢版 |
2022/12/18(日) 18:16:34.62ID:ixe6oE+R
>>620
ありえない。
あんた初心者すぎる。
0623NAME IS NULL
垢版 |
2022/12/18(日) 18:22:47.91ID:???
さすがのオラクルでも設計ミスだと認めてるのに
いつも上から目線の低スキル信者は空文字とNULLの区別もできないクソ仕様を必死に養護しててテラワロス
0624NAME IS NULL
垢版 |
2022/12/18(日) 18:30:36.96ID:???
>>621
もしかして関数から戻る直前にも
Set S = Nothing
とかの意味ないノウハウを信奉してたりしてw

>>622
具体的にしてき出来ないならとっとと遁走しなよ...
痛々しいぞ
0625NAME IS NULL
垢版 |
2022/12/18(日) 18:32:35.43ID:ixe6oE+R
>>624
関数とは言わない
自己流の言葉や思い込みが自分をダメにする
0626NAME IS NULL
垢版 |
2022/12/18(日) 18:33:23.08ID:ixe6oE+R
>>623
コッド自身が空はNULLといったん言ってしまてた。
0627NAME IS NULL
垢版 |
2022/12/18(日) 18:35:02.24ID:ixe6oE+R
空文字列という概念は1980年代以降に生まれたもの

1980年代はその空文字列もデータが大きくなるから、当然のように嫌われている。
0628NAME IS NULL
垢版 |
2022/12/18(日) 18:37:34.48ID:???
>>626
妄想じゃなければソース出してね
0629NAME IS NULL
垢版 |
2022/12/18(日) 18:50:46.26ID:???
>>625
Function って言えってか?
そういう所にしか突っ込めないとか情けなくならないの?
0630NAME IS NULL
垢版 |
2022/12/18(日) 18:59:05.54ID:???
>>627
>空文字列もデータが大きくなるから
うそですやんww
こういう所が低レベルと言われる所以
0631NAME IS NULL
垢版 |
2022/12/18(日) 19:40:58.90ID:???
そもそも1960年代のLISPでも空文字列とnull(LISPではNIL)は区別されてるから
>>627 > 空文字列という概念は1980年代以降に生まれたもの
自体が大嘘だし
0632NAME IS NULL
垢版 |
2022/12/19(月) 11:32:20.09ID:H4gqv1ey
>>631
それは空文字列ではなく、データ構造の話だろw
0633NAME IS NULL
垢版 |
2022/12/19(月) 11:33:40.26ID:H4gqv1ey
OracleDBに難癖をつけるやつが集まってくるほど人気になるとは思わなかったな。
0634NAME IS NULL
垢版 |
2022/12/19(月) 11:34:05.91ID:H4gqv1ey
>>629
VBAはファンクションプロシージャと呼ぶ
0635NAME IS NULL
垢版 |
2022/12/19(月) 11:36:30.48ID:H4gqv1ey
>>630
空文字列はメモリを確保している状態。データファイルだと終端文字が格納されている状態。
0636NAME IS NULL
垢版 |
2022/12/19(月) 11:38:51.55ID:H4gqv1ey
VBにはサブプロシージャとファンクションプロシージャというものがある。

用語が不正確なやつは無知をさらしているだけ。
0637NAME IS NULL
垢版 |
2022/12/19(月) 16:48:29.28ID:???
>>632
データ構造じゃねーよ、LISPのデータ構造はS式しかない
数値などと同じく文字列が存在するんだよ
0638NAME IS NULL
垢版 |
2022/12/19(月) 16:50:06.86ID:???
>>634,636
マジでそんな突っ込みして恥ずかしくないの?w
まあ話しそらそうと必死なんだろうけど
0639NAME IS NULL
垢版 |
2022/12/19(月) 17:31:13.83ID:???
おっ、やってるやってる!
0640NAME IS NULL
垢版 |
2022/12/19(月) 21:13:25.97ID:???
>>635
さすがボラクルくんw
無知なだけじゃなく頭が悪いww
終端文字www
0641NAME IS NULL
垢版 |
2022/12/20(火) 18:20:05.91ID:GPbhHUoK
NULLの存在意義が少しはわかってきたかな?
0642NAME IS NULL
垢版 |
2022/12/20(火) 18:24:05.59ID:GPbhHUoK
文字列はフェッチして終端まで行って、空だったと判定するのと

文字列をフェチしてすぐにNULLと判断できるデータが入っている

前者は無能極まりない
0643NAME IS NULL
垢版 |
2022/12/20(火) 18:27:01.66ID:GPbhHUoK
>>637
自分で文字列というものはないと言っている
文字列は文字列という概念を初めから持ったプログラミング言語やデータベースのことをいう。

メモリのデータが文字、連続したメモリのアドレスに格納されているデータが文字というのは文字列という概念を持っているプログラミング言語ではない。
0644NAME IS NULL
垢版 |
2022/12/20(火) 18:35:04.68ID:GPbhHUoK
文字列が格納されているメモリの先頭アドレスに文字列長を持たせるのも同じように思うかもしれないが、

ゴッド博士のデータベースの考え方は、値がないなら値がないとはっきりわかるようにすべきというもの。

空文字列を用意すると、空文字列に特定の意味を持たせる使い方をされるので、これは空文字列、空文字列、空文字列と騒いでいるやつのように製品としては何も制御できなくなる。
0645NAME IS NULL
垢版 |
2022/12/20(火) 18:49:33.88ID:???
>>643
> 自分で文字列というものはないと言っている
はあ?
どこでそんなアホなこと言ってるんだよ

> 文字列は文字列という概念を初めから持ったプログラミング言語やデータベースのことをいう。
LISPには文字列の概念はある
Emacs とか知らんのか?

> メモリのデータが文字、連続したメモリのアドレスに格納されているデータが文字というのは文字列という概念を持っているプログラミング言語ではない。
お前のアホ定義で語られてもなw
0646NAME IS NULL
垢版 |
2022/12/20(火) 22:42:00.47ID:???
>>615
ここに挙げられた各論文・書籍を見てきたけどボラクル君の主張は完全なウソだったわ
誤解とか誤読のレベルじゃなく完全な嘘つき

まともにNULLについて言及されてるのは最後の書籍だけで
その内容はコッドの12ルールにあるNULLのルールと基本同じ

Rule 3: Systematic Treatment of NULL Values
NULL values (distinct from empty character string or a string of blank characters and distinct from zero or any other number) are supported in the fully relational RDBMS for representing missing information in a systematic way, independent of data type.
0647NAME IS NULL
垢版 |
2022/12/21(水) 14:55:02.80ID:???
>644
>空文字列を用意すると、(略)製品としては何も制御できなくなる
世にある大半のRDBMSではちゃんと空文字列をNULLと区別して制御してるんだが?
世にある大半のプログラム言語では、空文字列とヌルポは別物なんだが?

制御できなくなるのは製品の問題じゃなくて、設計/運用する奴がダメだからだ

ORACLEがなぜそれを区別できない設計にしたのかはしらん
ORACLEではそういうものだとして扱えば良いだけ
それがORACLE自身の主義主張に基づくなら、ちゃんとその主張は啓蒙すべきだがな
ただ、世の大半でできることができないのは欠陥だといわれてもしょうがないな

つかVarchar2とかやめて、Varcharを標準的なNULLの仕様にすれば良いDBなんだがなぁ
0648NAME IS NULL
垢版 |
2022/12/21(水) 16:38:19.08ID:???
>>642
>文字列をフェチしてすぐにNULLと判断できるデータが入っている

ボラクル君はNULLと判断するためは文字列のフェッチが必要だと思ってるんだwww
書けば書くほど無知を晒してるねw
0649NAME IS NULL
垢版 |
2022/12/21(水) 17:39:07.43ID:???
そもそも他のDBMSでもNULLはあるから
> ゴッド博士のデータベースの考え方は、値がないなら値がないとはっきりわかるようにすべきというもの。
と言うのはOracleにはなんのアドバンテージもないんだけどね

> 空文字列を用意すると、空文字列に特定の意味を持たせる使い方をされるので、これは空文字列、空文字列、空文字列と騒いでいるやつのように製品としては何も制御できなくなる。
意味を持たせるのは分かるけど製品として何も制御出来なくなるとか意味わからん
まあ本人も何を言いたいのかよくわかってないんだろうなw
0650NAME IS NULL
垢版 |
2022/12/21(水) 18:15:43.50ID:???
Oracleは文字列に限らずzero-lengthかどうかでNULLかどうかを判断するデータ構造になってる
NULLでもレコード末尾のNULL以外は長さ0を格納するために1バイト使う

1つのデータ項目を2つの意味使うというDB設計初心者でもやらないような欠陥なんだが
標準に合わせるためにはレコードのデータ構造とNULLの判断に関わる部分を全面的に修正する必要があるので
コストが大きすぎて手が出せない
0652NAME IS NULL
垢版 |
2022/12/21(水) 22:37:09.03ID:???
>>651
分かっていってるんだと思うが
LOBの場合はNULLかどうかの判断に使ってるcolumn lengthにはlocatorの長さが格納されてる
行の中に実際格納されてるのはlocatorだけだから

同じ箇所に書いてある↓
「LOBで使用すると、IS NULLおよびIS NOT NULL演算子によってLOBロケータが行に格納されているかどうかが判別されます。」
0654NAME IS NULL
垢版 |
2022/12/21(水) 22:48:05.45ID:???
>>652
だから
> Oracleは文字列に限らずzero-lengthかどうかでNULLかどうかを判断するデータ構造になってる
が間違いだという指摘なんだけど?
わざわざ恥の上塗り乙
0655NAME IS NULL
垢版 |
2022/12/21(水) 23:48:39.59ID:???
>>654
君の言うlengthと俺の言うlengthが違うだけ
OracleがなぜANSI準拠にできないのか仕組みを説明してあげたつもりだったんだがわかんないなら別にいい
0656NAME IS NULL
垢版 |
2022/12/22(木) 04:50:38.33ID:???
>>655
> 君の言うlengthと俺の言うlengthが違うだけ
はあ?
わけわからん長さの定義出されても困るわ

> OracleがなぜANSI準拠にできないのか仕組みを説明してあげたつもりだったんだがわかんないなら別にいい
ポンコツOracleの仕組みなんてどうでもいいしw
0658NAME IS NULL
垢版 |
2022/12/23(金) 23:07:09.26ID:???
決着?
ボラクル君が遊ばれてるだけだよ
0659NAME IS NULL
垢版 |
2022/12/26(月) 13:14:09.18ID:P+HWBCzm
OracleDBのデータファイルはちゃんと領域を確保するまっとうな仕組み。
0660NAME IS NULL
垢版 |
2022/12/26(月) 13:32:19.60ID:P+HWBCzm
コッドがあとからNULL以外に「空」を追加したから、後発製品には「空」があるだけ。

空文字列にアプリケーション上の意味を持たせた設計はアンチパターン。

空文字列の場合は何かを意味するとしてしまうのはよくない。

数値型のときの「空」がゼロなのもよくない。
意図せずにゼロが入るのは完全な誤り。
0661NAME IS NULL
垢版 |
2022/12/26(月) 19:41:24.87ID:???
空文字列なんて、ただの長さゼロの有効な文字列なんだが
空文字列なんて、ただの長さゼロの有効な文字列なんだが
数値の空は0ではだめなのに
文字列の空は空文字列でもいいと?

コッドが追加したNULL以外の空ってなに?
0662NAME IS NULL
垢版 |
2022/12/27(火) 00:31:31.50ID:???
CoddのDBMSはSystem Rで、それが是だろ
0663NAME IS NULL
垢版 |
2022/12/27(火) 19:13:52.48ID:Nm1SClNo
>>661
NULLは空ではなくて、値がないという概念。

一部の人間がNULL以外に空文字列がほしいと言ったせいで、あとからNULLではない空文字列をコッドは追加した。

コッドはオラクル社と、一部のユーザーの意見を慌てて混ぜ込んだので、よくわからないものになった。
0664NAME IS NULL
垢版 |
2022/12/27(火) 19:18:02.13ID:Nm1SClNo
>>661
コッドはどのデータ型でも空が必要と考え直して、あせって空の概念を追加したから、数値の空がゼロになるという失敗をおかした。

ゼロが値のデータと、空を表現するゼロというデータの区別ができなくなった。

空文字列も同様に、空文字列が空なのか、空というデータなのか区別がつかなくなった。
0665NAME IS NULL
垢版 |
2022/12/27(火) 19:20:10.01ID:???
>>663
空文字列のほうがNULLより古い概念だと思うんだがな

つまりコッドは自分の間違いに気付いて修正したのに
オラクルは修正しなかったと
0666NAME IS NULL
垢版 |
2022/12/28(水) 00:44:53.00ID:???
おまえそんなウソをよく信じるなwww
0667NAME IS NULL
垢版 |
2022/12/28(水) 21:08:04.43ID:???
Edgar Frank “Ted” Coddが『A Relational Model of Data for Large Shared Data Banks』を書いたのが1969年
John McCarthyがLISP 1.5を作ったのが1958年
もちろんLISP 1.5に文字列は(当然空文字列も)ある
要するに>>663は単なるアホの妄想でしかない
0668NAME IS NULL
垢版 |
2022/12/28(水) 23:39:34.80ID:???
オラクルがおバカな設計をしたもんだからこりゃダメだと感じて
空文字とNULLは違うんだよって至極当然のことを声高に宣言して標準化することになったんだよ
0669NAME IS NULL
垢版 |
2023/01/04(水) 16:34:41.59ID:nkfvAbjd
コッドはオラクル社が製品化したことについては悪く言っていない。
空の概念は後付けなので、オラクル社が製品化したときには、まだコッドは空の概念がなかった。
0670NAME IS NULL
垢版 |
2023/01/04(水) 17:22:14.61ID:xblv//Bh
>>667
LISPおじさんは、空文字列がnilに変換されてしまうから怒っているのか。

ようやく変なこだわりが変わった。
それはLISPだけの話じゃない。

空文字列は空の文字列だから、NULLなんだよ?

わかった?
0671NAME IS NULL
垢版 |
2023/01/04(水) 17:48:04.83ID:???
年明け早々ガイジが沸いてて草
0672NAME IS NULL
垢版 |
2023/01/05(木) 09:27:21.66ID:uQIDyRWM
NULLは空文字列と使う側が変換すればいい話をくどくど言うやつは死ぬまで言うんだろうな。
0673NAME IS NULL
垢版 |
2023/01/05(木) 14:58:06.50ID:???
情報が失われてるのにどうやって変換するんだよw
NULLと空文字を区別するためのカラムを別途用意するのかww
0674NAME IS NULL
垢版 |
2023/01/05(木) 16:45:00.33ID:???
空文字列がNULLの人に、下記2点、イエスかノーかで答えてほしい

1.空文字列は文字列として有効である
2.NULLは文字列として有効である
0675NAME IS NULL
垢版 |
2023/01/06(金) 22:45:20.28ID:qDWOeluB
NULLは値がないことだよ

空文字列は空文字列という値だよ

空文字列はいらないと言ったのは博士だよ

歴史を知らないのなら、博士の考えが揺れたことをまずは調べてね。
0676NAME IS NULL
垢版 |
2023/01/06(金) 22:54:26.06ID:qDWOeluB
OracleDBでもCLOB型なら、ロケーターがあっても中身は空文字列という状態がある。

OracleDBは博士の言うものを実装するにあたって、NULLを値とも考えて実装した。

これはNULLを値として扱わないと実装できないからだ。

博士はOracleを見て、自分の理屈が実現しにくい中途半端な仕様とわかり、他からの意見も急遽、取り入れて空の概念を付け加えた。

NULLという概念はすばらしい。
しかし、空という概念をあとから付け加えたせいで、NULLの定義が邪魔になった。
0677NAME IS NULL
垢版 |
2023/01/06(金) 22:55:33.54ID:qDWOeluB
空文字列って初心者がよく使うよね
あれ何の意味があるんだろうか
0678NAME IS NULL
垢版 |
2023/01/06(金) 23:00:02.73ID:qDWOeluB
空文字列は見えないから、CUIの時代に空文字列を使って何がしたかったのかな?

空文字列に意味を持たせる設計なんて、メインフレーム時代の発想。
0679NAME IS NULL
垢版 |
2023/01/08(日) 17:57:43.19ID:???
ボラクル君はボラクル正常性バイアスに囚われて
低能ホラ吹きと化してしまってるな
0680NAME IS NULL
垢版 |
2023/01/08(日) 23:22:37.55ID:gY/PSv6X
>>679
心療内科などで掲示板の書き込みが気になって生活に支障が出ているかもしれないと相談した方がいいよ。
0681NAME IS NULL
垢版 |
2023/01/09(月) 06:29:09.83ID:???
脱オラクルしなよ
0682NAME IS NULL
垢版 |
2023/01/09(月) 21:39:23.15ID:KUT/WaWZ
有名どころはすべて使っているけど、どの製品も変なところはある。
0683NAME IS NULL
垢版 |
2023/01/12(木) 16:53:22.41ID:MJ3wDMfx
【2月13日】 原発上空にUFO? 【震度6強】
://rio2016.5ch.net/test/read.cgi/lifeline/1615255632/l50
0684NAME IS NULL
垢版 |
2023/01/19(木) 22:35:08.25ID:jlE8WkqW
>>681
DBAの立場からすると安易にOSSは勧められない。
安かろう悪かろうが必ず成立する世界だから。

MySQLもPostgreSQLもただの開発者ならまだいいが、DBA作業となると元の出来の悪さが際立って対処が難しくなる。

AWSでのOracleDBとSQL Serverが選択されるようになってきた。少し前までは減っていく方向だったが、フルマネージドはバージョンをどんどん上げないといけないから、仕様が変わっていないか頻繁に確認し直さないといけない。
0685NAME IS NULL
垢版 |
2023/01/20(金) 05:53:38.02ID:???
脱オラクルはテクニカルな問題はあまり問題視されていないような
0686NAME IS NULL
垢版 |
2023/01/21(土) 02:52:45.82ID:???
そりゃいまどき特定のDBMS(ORACLE)でしか使えないような機能とか、そうそうないからな
0687NAME IS NULL
垢版 |
2023/01/21(土) 15:36:12.78ID:W/7tJ9Sa
>>686
はあ?
0688NAME IS NULL
垢版 |
2023/01/21(土) 15:37:29.54ID:W/7tJ9Sa
>>686
DBMSの選定で機能比較をしたことがあるのか?
ないからそんなことが言える。
0689NAME IS NULL
垢版 |
2023/01/21(土) 21:00:31.30ID:???
Oracle だけじゃないけど SQL-Server 使ってると order by ~ nulls first は欲しいと思う
逆にちょっとした値を直書きしたい時に Oracle だと select ~ from (VALUES (1, 'one'), (2, 'two'), (3, 'three')) as t (num,letter); ってできないのが不満だわ
0690NAME IS NULL
垢版 |
2023/01/21(土) 23:12:57.75ID:W/7tJ9Sa
>>689
SQL Serverは文字の照合順序が指定できる。

そうしなくてもUNION ALLでNULLレコードを最初に持ってくるか最後に持ってくるかをSELECT文で指定できる。
0691NAME IS NULL
垢版 |
2023/01/21(土) 23:19:08.33ID:W/7tJ9Sa
>>689
ORDER BYの仕様は、OracleDBがNULLをNULL値と定義したおかげ。

キャラクタセットと文字の照合順序をORDER BYに絡ませた他のRBDMSは、性能を優先したせいで面倒な比較条件、ソート条件が仕様として残ってしまった。
0692NAME IS NULL
垢版 |
2023/01/23(月) 20:24:57.70ID:???
>>689
order by のNULLの順序は確かに指定したいときはままあるんだが、
ソートしたい項目にNULLが入ってる段階で設計間違ってる気がしないでもない

>>690-691
NULLは別に文字に限った話じゃないんだが?
ちなみに
>UNION ALLでNULLレコードを最初に持ってくるか最後に持ってくるかをSELECT文で指定できる。
これどうやるんだ?NULLレコードってなんだ?
0693NAME IS NULL
垢版 |
2023/01/23(月) 20:36:47.29ID:???
>>692
> ソートしたい項目にNULLが入ってる段階で設計間違ってる気がしないでもない
left join の結果とかで null をどっちかに寄せたいとか

> >>690-691
例のキチなので相手しなくていいかと
0694NAME IS NULL
垢版 |
2023/01/23(月) 21:28:14.57ID:9t/y6Qb8
------------
<テーブル>
・カラム
ID(主キー)(論理名 ID)
Number(論理名 巻数)
Title(論理名 タイトル)

・データ
ID 巻数     タイトル
1 第1巻     あいうえお
2 第2巻     かきくけこ
3 第3巻     さしすせそ
------------
このテーブルでInsert文作りたいのですが、
ID、Numberが+1ずつしていく場合、タイトル以外を自動加算させる書き方ってありますか?
------------
Insert Into テーブル
(ID,Number,Title)
Select
MAX(ID)+1, 第???回, たちつてと
From テーブル
------------
この 第???回 がわからず。。
0695NAME IS NULL
垢版 |
2023/01/24(火) 01:03:41.31ID:CDmns3ou
>>692
ソートしたカラムにNULLのレコードがあると彼は言っている。

select aaa from abc where aaa = b and aaa is not null order by aaa
union all
select aaa from abc where aaa = b and aaa is null;
0696NAME IS NULL
垢版 |
2023/01/24(火) 01:04:41.14ID:CDmns3ou
>>694
PL/SQLでやればいい
0697NAME IS NULL
垢版 |
2023/01/24(火) 01:06:05.17ID:CDmns3ou
>>694
select max(id) だけでも破綻しているぞ?
0698NAME IS NULL
垢版 |
2023/01/24(火) 11:44:08.22ID:???
>>695
そのSQL通るのか?
すくなくともSQL Serverではunionに指定できるorder byは最後に指定して全体に適用されるものだけのはずだが
サブクエリでTopとか使うなら個別のorder byは有効かもしれんが
unionした結果の行の順番は(全体としてのorder byがなければ)保証されないと思うが

ORACLEならそれで全体の順序が保証されるってなら、根拠となる資料教えてくれ
0699NAME IS NULL
垢版 |
2023/01/24(火) 13:01:51.57ID:???
保証されるわけない
ちなみにオラクルでは個別のorder byも書けない
0700NAME IS NULL
垢版 |
2023/01/25(水) 00:21:18.55ID:???
>>694
INSERT INTO ~ SELECT MAX(ID) + 1 …の形だと同時実行されたらダメじゃね?
他のDBMSと違ってオラクルだとSERIALIZABLEでもwrite skewが発生する
0701NAME IS NULL
垢版 |
2023/01/25(水) 13:44:05.91ID:???
>>700
さすがにSERIALIZABLEでそんなことが起こったらダメだろうと思うんだが
WikiのSnapshot isolation のとこ見ると
>Oracle は snapshot isolation のことを "serializable" と呼んでいる
って書いてあるな

今回の例なら素直にシーケンス使えで良いかもしれんが
トランザクション設計ちょっと考えんといかんな

どおりでみんなやたらにfor update書くわけだ
0702NAME IS NULL
垢版 |
2023/01/25(水) 15:22:11.85ID:???
オラクルでgap freeなシーケンスって存在する?
0703NAME IS NULL
垢版 |
2023/01/25(水) 17:59:27.93ID:???
>>700
同時実行とか関係なく単にデータを生成したいだけかもしれない
0704NAME IS NULL
垢版 |
2023/01/25(水) 23:07:49.88ID:YToOJ4zV
>>698
unionとunion allはまったく別物
0705NAME IS NULL
垢版 |
2023/01/25(水) 23:18:07.37ID:YToOJ4zV
>>698
select句に対して、ひとつのorder by句が対応するという構文の仕様があるが、select文のfrom指定をインライビュー(副問い合わせ)にすれば問題ない。

これは昔は想定していなかった仕様だから、SQLとして互換性を持たせるための構文仕様の話。

副問い合わせは、現在ではあたりまえの拡張構文だけど、古い仕様があるから、わさわざ2段階にしないといけないだけ。
0706NAME IS NULL
垢版 |
2023/01/25(水) 23:19:41.26ID:YToOJ4zV
------------
<テーブル>
・カラム
ID(主キー)(論理名 ID)
Number(論理名 巻数)
Title(論理名 タイトル)

・データ
ID 巻数     タイトル
1 第1巻     あいうえお
2 第2巻     かきくけこ
3 第3巻     さしすせそ
------------
このテーブルでInsert文作りたいのですが、
ID、Numberが+1ずつしていく場合、タイトル以外を自動加算させる書き方ってありますか?
------------
Insert Into テーブル
(ID,Number,Title)
Select
MAX(ID)+1, 第???回, たちつてと
From テーブル
------------
この 第???回 がわからず。。
0707NAME IS NULL
垢版 |
2023/01/25(水) 23:23:04.05ID:YToOJ4zV
>>706
単に

select id, '第' || id || '巻' as 巻数,タイトル from テーブル;

すらわからないレベルだと思われる。
0708NAME IS NULL
垢版 |
2023/01/25(水) 23:59:48.35ID:YToOJ4zV
>>701
serializableという言葉の定義は、製品によってバラバラ。

「Oracle は snapshot isolation のことを "serializable" と呼んでいる[1][2][3]。

PostgreSQL は以前は snapshot isolation のことを "serializable" と呼んでいたが、version 9.1 から "repeatable read" と呼ぶよう変更した[4][5][6]。

どちらの判断が正しいかは議論があるが、いずれにせよユーザは両者の違いをよく理解してデータ一貫性を失わないように注意する必要がある。」は、単にそう言っているだけ。

OracleDBは読み取り一貫性がなくなった時点で、ORA-1555の例外が発生して、トラサンザクションがロールバックされるから問題ない。
0709NAME IS NULL
垢版 |
2023/01/26(木) 02:14:02.80ID:???
>>708
別にエラーがでるなら問題ないんだよ
スナップショットだと読み取り一貫性は保たれてるのにwrite skewが発生するから問題なんだが?

さすがにserializableなのに直列化されないから注意しろとか地雷以外のなにものでもないわ
オラクルはよく言われるけど、昔からのおかしな仕様が修正しようにもできないからなぁ
0710NAME IS NULL
垢版 |
2023/01/26(木) 02:42:30.44ID:0ZdAuIEw
>>709
ちゃんと出来ていないものと、ちゃんと出来ているOracleDBを比較しても意味がない。

SQL Serverは例外(エラー)が発生しても、処理が自動的には止まらないというポンコツ。

人間がポンコツをポンコツだとわかってちゃんと使えるかどうかと、人間がミスしたら決まり通りに動く仕様のどちらがいいかだ。

OracleDBはそういう難癖、批判を受け続けているから、ちゃんとお金をかけて仕様を決めて作り込んでいる。

SQL ServerやMySQL系はSQLに存在しないテーブルが書いてあっても、構文チェックでははねずに、処理を実行するタイミングで実行時エラーを出す。

PostgreSQLも似たようなポンコツぶりだが、基底のデータ型が原因のSQL問題がある。

最初に作り込んでいた製品と、あと付けした製品だと、あと付けした製品の方が癖が強い。

何が正しいとか、何がおかしいとか正解がないのに、仕様が明確な製品をおかしいというのは、本当に嫌がらせにすぎない。

製品マニュアルがまともにない製品を基準に語るのは自由だが、製品の仕様を理解しないまま悪口を言うのは性格がよろしくない。
0711NAME IS NULL
垢版 |
2023/01/26(木) 02:54:55.00ID:0ZdAuIEw
自分の好きな製品のスレッドを盛り上げようとはしないあたりが性格が歪んでいると思う。

データベース板はOracleDBの悪口しか書かれない。
たくさん悪口を書かれるということは、それだけたくさん使われていて不満が少ないということだ。

日本IBMなんてDb2が心配なら、OracleDBを使ってくださいというぐらい、ちゃんと製品の選定をしている。

日本マイクロソフトは、SQL Serverのソースコードを読ませて、バグを外部から教えてもらってから、さあどうするかというレベル。

MySQLはMySQLしかわからない人向けの製品。
PosgreSQLは玄人向け製品。
0712NAME IS NULL
垢版 |
2023/01/26(木) 06:34:17.89ID:???
>>704
お前の戯言はどうでもいいから
> ORACLEならそれで全体の順序が保証されるってなら、根拠となる資料教えてくれ
よろしく
0713NAME IS NULL
垢版 |
2023/01/26(木) 10:20:23.59ID:0ZdAuIEw
>>712
オラクル社の製品マニュアル

オラクルマスターの試験でも質問の仕方が違うだけで、昔から出る問題だよ。
0714NAME IS NULL
垢版 |
2023/01/26(木) 10:38:59.85ID:???
>>713
マニュアルの名称とページ数よろしく

ちなみにゴールド持ちにきいたら何アホなこと言ってるんだよ
って言われたけどねw
0715NAME IS NULL
垢版 |
2023/01/26(木) 12:00:31.15ID:0ZdAuIEw
>>714
試験の仕組み上、Gold保持者は移行試験というショートカットがあるため、あまり知識がない場合がある。

Oracle Databaseの概要 トランザクションの管理
https://docs.oracle.com/cd/F19136_01/cncpt/introduction-to-oracle-database.html#GUID-ACACFFBC-BCB9-4BA9-A2A3-1B9B2003B3B4

Oracle Databaseの概要 トランザクションの管理 トランザクション
https://docs.oracle.com/cd/F19136_01/cncpt/transactions.html#GUID-B97790CB-DF82-442D-B9D5-50CCE6BF9FBD

Oracle Databaseの概要 トランザクションの管理 データ同時実行性
https://docs.oracle.com/cd/F19136_01/cncpt/data-concurrency-and-consistency.html#GUID-AD0CEE83-2F33-4906-94E1-3D1022924C63
レスを投稿する


ニューススポーツなんでも実況