【问题标题】:How to manage multiple tables, function, stored procedures and views (SQL Server)如何管理多个表、函数、存储过程和视图 (SQL Server)
【发布时间】:2017-06-06 12:31:38
【问题描述】:

我的数据库中有多个对象,我想列​​出它们并给出一些描述、可接受的参数及其类型。我知道最快的方法是生成一个数据库脚本并每天调用它,但是有没有更简单的方法来存档呢?我将 Microsoft SSMS 2017 与 SQL Server 2012 一起使用。

【问题讨论】:

  • 从 sys.objects 中选择 * ?
  • 我想要类似存储过程“A”:@Input Arguments: Name nvarchar(30), Surname nvarchar(30), ID int TABLE VALUED FUNCTION "B" 输入:Name nvarchar(30), Surname nvarchar(30), ID int 输出:City nvarchar(25)
  • Surname 是什么样的 SQL 对象?
  • nvarchar(30)...
  • nvarchar(30) 不是对象,而是数据类型。

标签: sql-server tsql sql-server-2012-express sql-server-2012-datatools


【解决方案1】:

您可以查询表INFORMATION_SCHEMA.PARAMETERS(或sys.parameters)。

这是一个简单的查询,它提取了您请求的一些数据;您可以以此为起点并详细说明以获得所需的输出:

select P.SPECIFIC_SCHEMA,
   P.SPECIFIC_NAME, 
   R.ROUTINE_TYPE,
   P.PARAMETER_MODE,
   P.PARAMETER_NAME, 
   P.DATA_TYPE, 
   P.CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.PARAMETERS P
inner join INFORMATION_SCHEMA.ROUTINES R ON P.SPECIFIC_CATALOG = R.ROUTINE_CATALOG 
   AND P.SPECIFIC_SCHEMA = R.ROUTINE_SCHEMA 
   AND P.SPECIFIC_NAME = R.ROUTINE_NAME 
order by P.SPECIFIC_SCHEMA, P.SPECIFIC_NAME, P.PARAMETER_MODE, P.PARAMETER_NAME

这是这个查询在一个简单数据库上的输出:

【讨论】:

  • 哇,我从来没有见过这样的 SQL 魔术,我想我需要好好研究一下。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2011-03-29
  • 1970-01-01
  • 2011-05-14
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多