2014-02-08 17 views
2

我有2個問題。如何使用C#在sql中選擇object_definition(object_id)?

該查詢顯示腳本存儲過程作爲創建查詢

查詢:

Select object_definition(object_id) from sys.objects 
    where type_desc in ('SQL_STORED_PROCEDURE') 

我可以顯示所有存儲過程的腳本。

問題1:我有TestStoreProcedure在店裏我procedures.How可以顯示只有我TestStoreProcedure.How可以使用這樣的:

Select object_definition(object_id) from sys.objects 
    where type_desc in ('SQL_STORED_PROCEDURE') and ??? =TestStoreProcedure 

問題2:如何使用該查詢表或用於定義表?

回答

0
EXECUTE sp_helptext proc_name --<-- Without schema name 
+0

這不是有用。它提供了很多行。但是我的代碼給出了一行sp – user3107343

1

我解決了表(創建定義的表名的腳本)

declare @vsSQL varchar(8000) 

declare @vsTableName varchar(50) 

select @vsTableName = 'tblLocation' 

select @vsSQL = 'CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10) 

select @vsSQL = @vsSQL + ' ' + sc.Name + ' ' + st.Name + 

case when st.Name in ('varchar','varchar','char','nchar') then 

'(' + cast(sc.Length as varchar) + ') ' else ' ' end + 

case when sc.IsNullable = 1 then 'NULL' else 'NOT NULL' end + ',' + char(10) 

from sysobjects so 

join syscolumns sc on sc.id = so.id 

join systypes st on st.xusertype = sc.xusertype 

where so.name = @vsTableName 

order by 

sc.ColID 

select substring(@vsSQL,1,len(@vsSQL) - 2) + char(10) + ')' 
2

只是爲了保持完整性,以限制OBJECT_DEFINITION輸出,你會做

SELECT OBJECT_DEFINITION(object_id) From sys.objects where name='TestStoredProcedure'