例如,我得到一个自定义报告,然后用户可以编写任何sql脚本。
在这种情况下是Select * FROM table_x
。
我怎么知道这个脚本的列是什么?
答案 0 :(得分:1)
如果您在程序级别担心这个问题,那么您的ORM可能会告诉您什么时候将它们拉下来。如果您使用的是经典的ADO.net,则可以查看结果(可能)DataTable
列。
如果您在SQL Server级别担心这一点,您必须找出表格的名称(例如,通过查找FROM
之后的下一个单词,但是&{ #39;在我看来很粗略),那么你可以这样做:
SELECT *
FROM Information_Schema.Columns
WHERE TABLE_NAME = 'ThatTableName'
这会告诉你一些关于他们的信息,包括他们的COLUMN_NAME
。
答案 1 :(得分:1)
在SQL Server 2012及更高版本中,您可以使用sp_describe_first_result_set
:
EXEC sp_describe_first_result_set @tsql = N'SELECT * FROM table_x;';