我有一个存储过程,它使用几个参数来构建一个动态查询,我执行它。查询工作正常,但是,此过程将是Crystal Report的数据源,需要一个"静态" SELECT with field names
它可以参考。从Visual Basic应用程序调用Crystal Report,并从应用程序获取它的参数传递给它。反过来,它将参数传递给SQL Server存储过程。
不知怎的,我需要
SELECT fieldname1, fieldname2
FROM Exec(@MydynamcSQL)
在我构建@MydynamcSQL
之后。它是一个复杂的应用程序,基于年份访问特定的表,以及基于用户的特定数据库。我对SQL很新,所以也许还有其他我可以使用的方法,我不知道?
答案 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注入攻击的攻击。参数化的动态查询可能会让您暴露。