過去の桐井戸端BBS (桐ver.9)
22099 外部DBでオラクルに書き出した表を削除する方法がわかりません 長門孝雄 2003/09/01-08:47
windows2000 桐V9 SP_1 を使用しています。
桐の表をリレーションするために外部DBでオラクルに書き出しています。
不要になった表を削除しようと思うのですがその方法がわかりません。
SQL*PLUSで
 drop table 表名
を実行しても表がないというエラー表示になります。
削除の方法等をご存知の方、なにとぞよろしくお願いいたします。
                        長門孝雄

22101 Re:外部DB書き出し表の削除について うにん 2003/09/01-11:47
記事番号22099へのコメント
>桐の表をリレーションするために外部DBでオラクルに書き出しています。
>不要になった表を削除しようと思うのですがその方法がわかりません。

書き出したものはオラクルの管理下にあるので、桐とは関係なくなります。
OSのファイルと違って桐からはどうにもできません。

>SQL*PLUSで
> drop table 表名
>を実行しても表がないというエラー表示になります。

select * from 表名
でもエラーになるんじゃないでしょうか?

22121 Re:外部DB書き出し表の削除について 長門孝雄 2003/09/02-08:27
記事番号22101へのコメント
うにんさんたびたびのコメントありがとうございます。

>select * from 表名
>でもエラーになるんじゃないでしょうか?
>
試したところ同じようなエラー表示になります。
SQL*PLUSでの操作はオラクルの管理化にはならないのでしょうか?
同じ名前の同じ項目のファイルをSQL*PLUSで作ったところ、このファイルは削除できます。
select * from 表名 でも表示されます。
今後はこの方法でやっていこうと思います。ありがとうございました。
                          長門孝雄
22123 Re:外部DB書き出し表の削除について hidetake 2003/09/02-09:53
記事番号22121へのコメント
>>select * from 表名
>>でもエラーになるんじゃないでしょうか?
>>
>試したところ同じようなエラー表示になります。
>SQL*PLUSでの操作はオラクルの管理化にはならないのでしょうか?
>同じ名前の同じ項目のファイルをSQL*PLUSで作ったところ、このファイル
>は削除できます。
>select * from 表名 でも表示されます。

接続している DB が違っているのじゃ無いのか?って,私は思っていたのですが,
この方法で作成したテーブルを桐でも参照・更新することができるのですか?
権限とかも同じユーザ名でやってはいるのですよね?

ちなみに,VBS で ODBC 相手に操作する場合は次のようなスクリプトでデータを表示させる事も可能です。
cscript runsql.vbs "dsn=reikai" "select * from reikai where id<=10"
-------------------------------------------------------------
Dim arg
Set arg = WScript.Arguments
If Arg.Count < 2 Then
WScript.Quit
End If

Dim obj,rs
dsn=arg(0)
sql=arg(1)
Set arg = Nothing

Set obj = Wscript.CreateObject("ADODB.Connection")
obj.Open dsn
SQLQuery = sql
Set rs = obj.Execute(SQLQuery)

Do While Not rs.EOF
Wsh.Stdout.Write "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" & vbCrLF
For i=0 to rs.Fields.Count -1
Wsh.Stdout.Write rs.Fields(i).name & ":"
Wsh.Stdout.Write rs(i) & vbCrLF
Next
rs.MoveNext
Loop

Set rs = Nothing
Set obj = Nothing
WScript.Quit
-------------------------------------------------------------

テーブルを削除する場合で結果まで取得しないのだったら,もっと簡単に・・・
runsql.vbs "dsn=reikai" "drop table hogehoge"
-------------------------------------------------------------
Dim arg
Set arg = WScript.Arguments
If Arg.Count < 2 Then
WScript.Quit
End If

Dim obj,rs
dsn=arg(0)
sql=arg(1)
Set arg = Nothing

Set obj = Wscript.CreateObject("ADODB.Connection")
obj.Open dsn
SQLQuery = sql
rs = obj.Execute(SQLQuery)
Set obj = Nothing
WScript.Quit
-------------------------------------------------------------

あとは,桐から直接,任意の SQL文を発行したい場合は,前に書いた #DSQLを使った裏技もあるかも? (^^;
22143 Re:外部DB書き出し表の削除について 長門孝雄 2003/09/03-08:03
記事番号22123へのコメント
hidetakeさんコメントありがとうございます。
数年前にプリンタバッファの切替の件でお世話になりました。

>
>接続している DB が違っているのじゃ無いのか?って,私は思っていたの
>ですが,この方法で作成したテーブルを桐でも参照・更新することができる
>のですか? 権限とかも同じユーザ名でやってはいるのですよね?
>
>
SQL*PLUSで作成した表は主キーもSQL*PLUSで作っているのですが、
桐で問題なく参照更新できます。
権限とかも同じユーザーで行っております。
VBSは使っていないので全くわからないのですが、ACCESSは使っています。
今後ともなにとぞよろしくお願いいたします。
                           長門孝雄

22144 Re:外部DB書き出し表の削除について うにん 2003/09/03-08:54
記事番号22121へのコメント
>>select * from 表名
>>でもエラーになるんじゃないでしょうか?
>>
>試したところ同じようなエラー表示になります。

ということは、やはりメッセージ通り書き出したはずの表がその場所にはないわけで、
hidetakeさんのおっしゃるように、書き出したときの接続先がSQL*PLUSでのものと違ってる位しか考えられませんが。
他にあるとしたら文字コードが違ってて表名がそのとおりに認識されていないとか?
しかしSQL*PLUSで定義した表には桐からアクセスできるらしいのでどうもよくわかりません。
22145 Re:外部DB書き出し表の削除について hidetake 2003/09/03-09:50
記事番号22144へのコメント
私はオラクルを使った事は無いので何ですが,良くわからないです。 (^^;

>他にあるとしたら文字コードが違ってて表名がそのとおりに認識されていないとか?

これと少し関係する事と言えば,そのファイル名は ASCII な英数字を使っているのでしょうか?
それとも日本語のダブルバイトな文字も含んでいるのでしょうか?

それと同時に,桐からの書き出しも SQL*PLUSでの定義も,
全く同じテーブル名を指定しているのでしょうか?

PostgreSQL + PHP の場合,SQL文でテーブル名やフィールド名に日本語を含む場合は,
その指定の際は " " で括らないと正常に認識しないと言う事はあったです。


# 外部DB を使う場合,テーブル名やフィールド名等には日本語を含ま
# ない方が SQL を書く上では楽ですね? (^^;
22155 Re:外部DB書き出し表の削除について 長門孝雄 2003/09/04-08:31
記事番号22145へのコメント
hidetakeさんコメントありがとうございます。

>これと少し関係する事と言えば,そのファイル名は ASCII な英数字を
>使っているのでしょうか? それとも日本語のダブルバイトな文字も
>含んでいるのでしょうか?

ファイル名項目名ともに日本語は使用しておりません。

>
>それと同時に,桐からの書き出しも SQL*PLUSでの定義も,全く同じ
>テーブル名を指定しているのでしょうか?

同じテーブル名を使用しています。

ところで、会社でのORACLEは8iですが、自宅で書籍付属の9i 120日評価版を
インストールして試したのですが、桐の外部DB書き出しで作った表がSQL*PLUSで削除、主キー作成、更新できました。
SELECT * FROM 表名 で表示もできます。

ODBCドライバーのバージョンによりできたりできなかったりするようですが、
私が権限についての理解ができていないかもしれません。
会社のものは業者がインストールしたもので権限等は勝手にさわると具合が悪い気がして、
なにもせず操作していました。
以上ご報告まで。
                           長門孝雄


22156 Re:外部DB書き出し表の削除について 長門孝雄 2003/09/04-08:43
記事番号22144へのコメント
うにんさんたびたびすみません。

>hidetakeさんのおっしゃるように、書き出したときの接続先がSQL*PLUSでのものと
>違ってる位しか考えられませんが。

私もその辺ではないかと思ったのですが、桐の外部DB接続でORACLEの表を選ぶときに
所有者もおなじで、表名が英大文字と小文字で同じ表があるので接続先は一緒だと思っています。

>他にあるとしたら文字コードが違ってて表名がそのとおりに認識されていないとか?
>しかしSQL*PLUSで定義した表には桐からアクセスできるらしいのでどうもよくわかりませ
>ん。

どうしても腑に落ちないので書籍付属のORCLE 9iの120日評価版を自宅で
インストールしたところ、正常に桐の書き出しファイルかSQL*PLUSで認識されました。
いろいろとありがとうございました。
                            長門孝雄


戻る