Fam*_* th 0 .net c# sql vb.net sql-server
首先,我可以使用这些简单的方法获取View的基表和列.
Private Function GetBasetableFromSql(ByVal viewTable As String) As Integer
Dim dt As New DataTable
Try
Dim sqlConn As SqlConnection
sqlConn = New SqlConnection("Data Source=xxx;Initial Catalog=xxx_MMS;User ID=xxx;Password=xxxx")
sqlConn.Open()
Dim ta As SqlDataAdapter
Dim strSql As String
strSql = "SELECT DISTINCT VIEW_NAME,c.TABLE_NAME " + _
FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE AS cu JOIN
INFORMATION_SCHEMA.COLUMNS AS c ON c.TABLE_SCHEMA =
cu.TABLE_SCHEMA AND c.TABLE_CATALOG = cu.TABLE_CATALOG AND
c.TABLE_NAME = cu.TABLE_NAME AND c.COLUMN_NAME = cu.COLUMN_NAME" & _
" WHERE VIEW_NAME = '" & ViewTableName & "'"
ta = New SqlDataAdapter(strSql, sqlConn)
ta.Fill(dt)
For Each dr As DataRow In dt.Rows
dgvRootTable.Rows.Add(dr(0), dr(1))
Next
sqlConn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return dt.Rows.Count
End Function
Run Code Online (Sandbox Code Playgroud)
但是一些View是由复杂的查询创建的.所以我需要从之前的视图中获取sql代码并使用正则表达式的方式(如果有另一种方法.请告诉我.)从sql代码字符串中获取表和列.但我不知道如何通过编程方式获取sql代码?
如果我能得到基本表和列.我将在这样的文档中创建结果
**View Table :** V_PO_SCRAP_NG_DTLS
[SCRAP_NG_DTLS].[TRAN_ID]
[SCRAP_NG_DTLS].[SEQ_NO]
[SCRAP_NG_DTLS].[CAUSE-OF-NG-JD]
[SCRAP_NG_DTLS].[CAUSE_OF_NG_DESCR]
[SCRAP_NG_DTLS].[NG_QTY]
Run Code Online (Sandbox Code Playgroud)
如果要查看sql脚本视图,可以使用以下命令.您可以使用相同的命令来获取存储过程的sql脚本,然后按Ctrl + T以文本格式查看结果.
sp_helptext 'yourViewName or ProcedureName'
Run Code Online (Sandbox Code Playgroud)