OracleExcel VBA写获取表字段类型及约束语句
生活随笔
收集整理的這篇文章主要介紹了
OracleExcel VBA写获取表字段类型及约束语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle:
select /*字段及注釋*/t1.owner,t1.table_name,t2.comments,t1.column_name,t3.comments,/*字段類型*/t1.data_type,t1.DATA_LENGTH,t1.DATA_PRECISION, /*字段約束*/t1.nullable,t6.c_unique,t6.c_primary,t6.c_relafrom all_tab_columns t1 left join all_tab_comments t2 on t1.owner=t2.owner and t1.table_name=t2.table_name left join all_col_comments t3 on t1.owner=t3.owner and t1.table_name=t3.table_name and t1.column_name=t3.column_nameleft join (select * from (select t4.OWNER,t4.TABLE_NAME,t4.COLUMN_NAME,t5.CONSTRAINT_TYPE from all_cons_columns t4 left join all_constraints t5 on t4.constraint_name=t5.constraint_name and t4.owner=t5.owner and t4.table_name=t5.table_namewhere t4.TABLE_NAME= v_table_name and CONSTRAINT_TYPE<>'C' --******傳表名) pivot (max(CONSTRAINT_TYPE) for CONSTRAINT_TYPE in ('U' as c_unique,'P' as c_primary,'R' as c_rela)) ) t6on t1.owner=t6.owner and t6.TABLE_NAME=t1.TABLE_NAME and t1.column_name=t6.column_name where t1.OWNER= v_owner and t1.TABLE_NAME=v_table_name ORDER BY T1.COLUMN_ID ; --******傳表名Excel VBA
Dim conn As New ADODB.Connection Dim strConn As String Dim strconn1 As String Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.recordset") sqls = "" sqls = sqls & "select " sqls = sqls & "t1.owner as ""用戶名"",t1.table_name as ""表名稱"",t2.comments as ""表注釋"",t1.column_name as ""字段名稱"",t3.comments as ""字段注釋"", " sqls = sqls & "t1.data_type as ""字段類型"",t1.data_length as ""字段長度"" ,t1.data_precision as ""字段精度"", " sqls = sqls & "t1.nullable as ""是否允許為空"",t6.c_primary as ""是否為空"" , t6.c_unique as ""是否唯一"",t6.c_rela as ""是否關聯外鍵"" " sqls = sqls & "from all_tab_columns t1 " sqls = sqls & "left join all_tab_comments t2 on t1.owner=t2.owner and t1.table_name=t2.table_name " sqls = sqls & "left join all_col_comments t3 on t1.owner=t3.owner and t1.table_name=t3.table_name and t1.column_name=t3.column_name " sqls = sqls & "Left Join " sqls = sqls & "(select * from " sqls = sqls & "(select t4.OWNER,t4.TABLE_NAME,t4.COLUMN_NAME,t5.CONSTRAINT_TYPE from all_cons_columns t4 " sqls = sqls & "left join all_constraints t5 on t4.constraint_name=t5.constraint_name and t4.owner=t5.owner and t4.table_name=t5.table_name " sqls = sqls & " where t4.TABLE_NAME= '" & v_table_name & "' and CONSTRAINT_TYPE<>'C' " sqls = sqls & ") pivot (max(CONSTRAINT_TYPE) for CONSTRAINT_TYPE in ('U' as c_unique,'P' as c_primary,'R' as c_rela)) " sqls = sqls & ") t6 " sqls = sqls & "on t1.owner=t6.owner and t6.TABLE_NAME=t1.TABLE_NAME and t1.column_name=t6.column_name " sqls = sqls & "where t1.OWNER= '" & v_owner & "' and t1.TABLE_NAME= '" & v_table_name & "' ORDER BY T1.COLUMN_ID " '注意傳參'On Error GoTo excetpion Set rst = conn.Execute(sqls)Do While Not rst.EOF()'Next 下一行rst.MoveNextnum = num + 1 Loop '結束每行數據的處理?
總結
以上是生活随笔為你收集整理的OracleExcel VBA写获取表字段类型及约束语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NHibernate初学者指南(2):一
- 下一篇: 图解VS2010打包全过程