我想创建一个存储过程,它采用简单的 SELECT 语句并将结果集作为 CSV 字符串返回。所以基本思想是从用户输入中获取 sql 语句,使用 EXEC(@stmt) 运行它并使用游标将结果集转换为文本。但是,由于 SQLServer 不允许:
- 从存储过程中选择 *(@sqlStmt)
- 带有 EXEC 的 UDF(@sqlStmt)
所以我尝试插入#tempTable EXEC(@sqlStmt),但这不起作用(错误=“无效的对象名称#tempTable”)。
我被困住了。您能否对此事有所了解?
非常感谢
编辑:
实际上输出(例如 CSV 字符串)并不重要。问题是我不知道如何将游标分配给 EXEC 返回的结果集。SP 和 UDF 不能与 Exec() 一起使用,而在不知道输入语句的情况下,在插入值之前创建临时表是不可能的。
我想到了 OPENQUERY,但它不接受变量作为其参数。