故郷を離れて三十数年、関東で暮らす永遠の少年のどーってことない日記
xxSEARCHxx
プロフィール

ST☆FF

Author:ST☆FF
HTTといえばインテルの Hyper-Threading Technology!・・・ではなく、放課後ティータイムのことだと思います。

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム
ブログ内検索
RSSフィード
リンク

最近の記事


SQL文を作成するVB.netコードを吐くSQL文 

2015/08/24 21:28/Mon
なんだかややこしいタイトルですが、そのまんま「VB.netのコードを自動生成するSQL文」です。
新規プロジェクトでテーブルにデータを挿入するメソッドを書くのは非常にメンドクサイものです。
特にカラム数が多いほどメンドクサイ(笑)
そこでこのSQLが便利です!
--**********************************************************************
-- 指定テーブルのINSERT文を作るVBコードを吐くSQL
-- Object Browser のクリップボード経由だとEXCEL貼り付け用に「"」が「""」に
-- されてしまうのでExcelシート(.xlsx)にファイル出力してから利用する
--**********************************************************************
SELECT 'Public Function GetInsertSql(ByVal argSrt As object) As String' AS VB_CODE FROM DUAL
UNION ALL
SELECT 'Dim sb As New System.Text.StringBuilder' AS VB_CODE FROM DUAL
UNION ALL
SELECT 'sb.Append("insert into ' || 'TABLE_01' || ' (")' AS VB_CODE FROM DUAL -- < YOUR TABLE ID
UNION ALL
SELECT 'sb.Append(" ' || COL_ENUM1.COLUMN_COMMA || '")' AS VB_CODE
FROM (SELECT USER_COL_COMMENTS.COLUMN_NAME || ',' AS COLUMN_COMMA
FROM USER_TAB_COLUMNS
INNER JOIN USER_COL_COMMENTS
ON USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
WHERE USER_TAB_COLUMNS.TABLE_NAME = 'TABLE_01' -- < YOUR TABLE ID
ORDER BY USER_TAB_COLUMNS.COLUMN_ID) COL_ENUM1
UNION ALL
SELECT 'sb.Append(") values(")' AS VB_CODE FROM DUAL
UNION ALL
SELECT 'sb.Append("''" + argSrt.' || COL_ENUM2.COLUMN_NM || ' + "'',") ' || ''' ' || COL_ENUM2.COLUMN_WAMEI AS VB_CODE
FROM (SELECT USER_COL_COMMENTS.COLUMN_NAME AS COLUMN_NM
, USER_COL_COMMENTS.COMMENTS AS COLUMN_WAMEI
FROM USER_TAB_COLUMNS
INNER JOIN USER_COL_COMMENTS
ON USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
WHERE USER_TAB_COLUMNS.TABLE_NAME = 'TABLE_01' -- < YOUR TABLE ID
ORDER BY USER_TAB_COLUMNS.COLUMN_ID) COL_ENUM2
UNION ALL
SELECT 'sb.Append(")")' AS VB_CODE FROM DUAL
UNION ALL
SELECT 'Return sb.ToString' AS VB_CODE FROM DUAL
UNION ALL
SELECT 'End Function' AS VB_CODE FROM DUAL

3ヶ所のテーブルIDを対象のものに変更して実行すると、こんな感じのテキストを吐きます。
VB_CODE
Public Function GetInsertSql(ByVal argSrt As object) As String
Dim sb As New System.Text.StringBuilder
sb.Append("insert into TABLE_01 (")
sb.Append(" COLUMN_01,")
sb.Append(" COLUMN_02,")
sb.Append(" COLUMN_03,")
sb.Append(" COLUMN_04,")
sb.Append(" COLUMN_05,")
sb.Append(" COLUMN_06,")
sb.Append(" COLUMN_07,")
sb.Append(" COLUMN_08,")
sb.Append(" COLUMN_09,")
sb.Append(" COLUMN_10,")
sb.Append(") values(")
sb.Append("'" + argSrt.COLUMN_01 + "',") ' カラム01
sb.Append("'" + argSrt.COLUMN_02 + "',") ' カラム02
sb.Append("'" + argSrt.COLUMN_03 + "',") ' カラム03
sb.Append("'" + argSrt.COLUMN_04 + "',") ' カラム04
sb.Append("'" + argSrt.COLUMN_05 + "',") ' カラム05
sb.Append("'" + argSrt.COLUMN_06 + "',") ' カラム06
sb.Append("'" + argSrt.COLUMN_07 + "',") ' カラム07
sb.Append("'" + argSrt.COLUMN_08 + "',") ' カラム08
sb.Append("'" + argSrt.COLUMN_09 + "',") ' カラム09
sb.Append("'" + argSrt.COLUMN_10 + "',") ' カラム10
sb.Append(")")
Return sb.ToString
End Function

後は引数の型を実際の構造体型に打ち変え、最後のカラム名直後と最後の構造体メンバ名直後のカンマを削除すればOKです。
全カラムがキャラであると想定しているので、それ以外(NumberとかDateとか)のカラムは適宜カスタマイズしてください。



スポンサーサイト
CATEGORY:仕事関係 | CM(0) | TB(0) |
xx HOME xx