Sql server 打印带有选项集的表列表

Sql server 打印带有选项集的表列表,sql-server,cursor,temp-tables,Sql Server,Cursor,Temp Tables,我想打印一个包含200个参考表名refTableA、refTableB等的列表,以及每个表的选项集refTableAID、Description、Code和SortOrder。某些选项集是单个记录;其他可能包括30多条记录。 下面的脚本将说明、代码和排序器数据插入临时表。如何将表refTableA的名称插入到RefTableName字段中,将ID RefTableAID插入到RefTableNameId字段中,我被难住了。非常感谢您的帮助 IF OBJECT_ID('tempdb..#Temp'

我想打印一个包含200个参考表名refTableA、refTableB等的列表,以及每个表的选项集refTableAID、Description、Code和SortOrder。某些选项集是单个记录;其他可能包括30多条记录。 下面的脚本将说明、代码和排序器数据插入临时表。如何将表refTableA的名称插入到RefTableName字段中,将ID RefTableAID插入到RefTableNameId字段中,我被难住了。非常感谢您的帮助

IF OBJECT_ID('tempdb..#Temp') IS NOT NULL DROP TABLE #Temp
DECLARE @table nvarchar(150) 
DECLARE @sqlinsert nvarchar(max)
DECLARE C1 CURSOR FOR SELECT TABLE_NAME FROM  Information_schema.tables where TABLE_NAME like 'ref%'

Create table #Temp
(
RefTableName nvarchar(150),
RefTableNameId int,
Description nvarchar(100),
Code nvarchar(50),
SortOrder Decimal(5,2)
)

OPEN C1
FETCH next FROM C1 INTO @table
WHILE @@FETCH_STATUS =0
BEGIN
  set @sqlinsert='Insert into #Temp (Description, Code, SortOrder) 
    Select Description,Code,SortOrder from *tbl*'       
  set @sqlinsert = REPLACE(@sqlinsert,'*tbl*',@table)
  Print (@sqlinsert)
  Exec (@sqlinsert)   
FETCH next FROM C1 INTO @table
END
CLOSE C1
DEALLOCATE C1
SELECT * from #Temp

这也许是你可以用的东西

SELECT *
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME =       FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
SELECT i1.TABLE_NAME, i2.COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME =      i2.CONSTRAINT_NAME 
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT ON PT.TABLE_NAME = PK.TABLE_NAME
WHERE (PK.TABLE_SCHEMA= '<SCHEMA>' AND PK.TABLE_NAME = '<PK_Table>')
AND (FK.TABLE_SCHEMA= '<SCHEMA>' AND FK.TABLE_NAME = '<FK_TABLE>');

我用这个答案工作,但它没有帮助。回到原点。