You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从T-SQL脚本提取参数并获取对应数据库数据类型?

从T-SQL脚本中提取参数并推断数据类型的方案

示例T-SQL脚本

Select 
    Proveedor.RazonSocial, Articulo.ArticuloId As Código, 
    Articulo.Descripcion As Descripción
From
    Articulo
Inner Join 
    Suministrador On (Articulo.OID = Suministrador.Articulo)
Inner Join 
    Proveedor On (Suministrador.Proveedor = Proveedor.OID)
Where 
    Proveedor.ProveedorId = @CodigoDeProveedor

需求说明

希望获取脚本中参数(如@CodigoDeProveedor)及其从数据库表中推断出的数据类型(本例中为int)的列表,用于搭建GUI界面让终端用户输入参数值。当前已自行实现参数解析,但希望使用现成方案避免重复造轮子。

现成解决方案:使用系统存储过程sp_describe_undeclared_parameters

SQL Server提供了系统存储过程sp_describe_undeclared_parameters,可以直接解析T-SQL脚本中的未声明参数,并根据参数的使用上下文自动推断其数据类型。

使用示例

执行以下SQL语句,传入目标脚本:

EXEC sp_describe_undeclared_parameters 
    @tsql = N'
Select 
    Proveedor.RazonSocial, Articulo.ArticuloId As Código, 
    Articulo.Descripcion As Descripción
From
    Articulo
Inner Join 
    Suministrador On (Articulo.OID = Suministrador.Articulo)
Inner Join 
    Proveedor On (Suministrador.Proveedor = Proveedor.OID)
Where 
    Proveedor.ProveedorId = @CodigoDeProveedor
'

返回结果说明

该存储过程会返回一个结果集,关键列包括:

  • parameter_name:脚本中的参数名(如@CodigoDeProveedor)
  • system_type_name:推断出的数据类型(如int)
  • max_length:数据类型的最大长度
  • precision和scale:数值类型的精度和小数位数

注意事项

  • 执行该存储过程的用户需要具备脚本中涉及表/视图的访问权限,否则无法准确推断数据类型
  • 对于包含多个参数的脚本,该存储过程会一次性返回所有参数的信息
  • 若参数在脚本中用于多个类型冲突的上下文,推断结果可能需要手动验证,但绝大多数常规场景下结果准确

内容的提问来源于stack exchange,提问作者MartinHT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:01:06