SELECT fieldnames FROM动态SQL查询

时间:2014-06-16 21:12:03

标签: sql tsql crystal-reports

我有一个存储过程,它使用几个参数来构建一个动态查询,我执行它。查询工作正常,但是,此过程将是Crystal Report的数据源,需要一个"静态" SELECT with field names它可以参考。从Visual Basic应用程序调用Crystal Report,并从应用程序获取它的参数传递给它。反过来,它将参数传递给SQL Server存储过程。

不知怎的,我需要

SELECT fieldname1, fieldname2 
FROM Exec(@MydynamcSQL)
在我构建@MydynamcSQL之后

。它是一个复杂的应用程序,基于年份访问特定的表,以及基于用户的特定数据库。我对SQL很新,所以也许还有其他我可以使用的方法,我不知道?

2 个答案:

答案 0 :(得分:1)

尝试创建临时表以临时插入数据,然后从该表中选择:

DECLARE @MydynamcSQL varchar(1000);

SET @MydynamcSQL = 'select fieldname1, fieldname1 from table1';

CREATE TABLE #Result
(
  fieldname1 varchar(1000),
  fieldname2 varchar(1000)  
)
INSERT #Result Exec(@MydynamcSQL)
SELECT fieldname1, fieldname1 -- here you have "static SELECT with field names"
FROM #Result 
DROP TABLE #Result

答案 1 :(得分:0)

你是否尝试过让动物变得动态,例如:

Exec( 'SELECT fieldname1, fieldname2 FROM ' + @MydynamcSQL)

值得注意的是,虽然超出范围,但请确保您不会受到sql注入攻击的攻击。参数化的动态查询可能会让您暴露。