- PR -

型を一斉に変更したいです。

1
投稿者投稿内容
まーちゃん
会議室デビュー日: 2006/04/10
投稿数: 7
投稿日時: 2006-04-18 19:48
お世話になります。

データベースは、ORACLE10gです。
テーブル作成時に、あるフィールドの型を「NVARCHAR2」にしなくてはいけない部分を「VARCHAR2」で作成してしまいました。

※Visioにて、ドライバをAccess又はSQLServerで、NVARCHR2型を指定していても、ドライバをOracleに変更すると、なぜか、VARCHR2型になってしまうんです。

そこで、VARCHAR2のフィールドを、すべてNVARCHAR2に変更したいと思っています。サイズもそのままにしたいです。

SQL文でやると、
ALTER TABLE テーブル名 MODIFY(フィールド名 NVARCHAR2(サイズ));
この文を、変更する分だけ書いてもいいのですが、なんとか、テーブル名を指定したら、その中にある「VARCHAR2」を「NVARCHAR2」に変更みたいなことがしたいです。

処理的には、
1.引数のテーブル内にある「VARCHAR2」型のフィールドを検索する。
2.ヒットした分、ループし、SQL文を発行。その時、DBからヒットしたフィールドのサイズを取得する
 ALTER TABLE 引数のテーブル名 MODIFY(検索しヒットしたフィールド名 NVARCHAR2(DBから取得したサイズ));

こんな感じのストアドプロシジャーってできるでしょうか?

よろしくお願いします。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-04-18 20:06
わざわざストアドプロシジャーを作るまでも無く、テーブル定義文をエディターで取り込んで
文字列置換、カットアンドペースト とか駆使すればMODIFYのSQL作れませんか?
一回動けば良いんですよね
まーちゃん
会議室デビュー日: 2006/04/10
投稿数: 7
投稿日時: 2006-04-18 20:15
七味唐辛子さん、こんばんわ。
一回限りであれば、SQL文を作成すのですが、今後、Oracleにテーブルを作成する場合、VisioからOracleドライバを使用し生成しようとするとどうしても「VARCHAR2」になってしまうので、今後、何回も使用したいと思ってます。
Visioの方で、「NVARCHAR2」として、生成できるのであれば、一回限りでよいのですが・・・。
なので、フィールドが増えた場合でも対応できるように、テーブル内の「VARCHAR2」をすべて検索し、型を変換みたいなことをしたいと思ってます。
1

スキルアップ/キャリアアップ(JOB@IT)