来自这样的 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)
我可以使用任何存储过程或脚本来执行此操作吗?
澄清:
sp_describe_undeclared_parameters
系统程序。
DECLARE @query nvarchar(max) = 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
';
EXEC sp_describe_undeclared_parameters @query;
但在很多情况下它可能会失败,尤其是当一个参数被使用两次时。
DECLARE @TSQLScript NVARCHAR(MAX) = '这里是您的 T-SQL 脚本' DECLARE @ParameterList NVARCHAR(MAX) = '@CodigoDeProveedor INT' -- 示例参数列表
-- 解析参数列表,获取参数名称和数据类型 声明@参数表( 参数名称 NVARCHAR(255), 数据类型 NVARCHAR(50) )
声明@ParameterXML XML SET @ParameterXML = CAST('
' + REPLACE(@ParameterList, ',', '
') + '
' AS XML)插入@Parameters(参数名称,数据类型) 选择 param.value('.', 'NVARCHAR(255)') AS 参数名称, 'UNKNOWN' AS DataType -- 将数据类型初始化为 UNKNOWN,您将需要查询架构 FROM @ParameterXML.nodes('//p') AS 参数(param)
-- 查询数据库模式以获取实际数据类型 更新@参数 设置数据类型 = ( 选择前 1 个数据类型 来自 information_schema.columns WHERE table_name = 'YourTableName' -- 替换为实际表名 AND 列名称 = 参数名称 )
-- 打印参数名称及其数据类型 从@Parameters中选择*
请注意,此脚本经过简化,可能无法涵盖所有场景,特别是如果您的 T-SQL 脚本很复杂并且涉及动态 SQL 或其他高级功能。您需要根据您的具体要求和数据库架构来调整和增强它。