我正在使用Coldfusion 9和SQL Server 2008.我试图了解这些平台,并且真正学习如何有效地利用这两个平台的报表解决方案。存储过程或sprocs有一些很大的挑战。我想要的只是一个非常简单的答案,可以让我的sprocs达到我可以在CFML中利用它们的地步,并将数据提供给需要它的人员。Coldfusion CFSTOREDPROC不返回表格
我在网上做了一些研究,似乎SQL Server 2008利用临时表放入RAM(@)或写入本地用户(#)的磁盘。我的问题是我似乎无法让生成的临时表从数据库进程调用中将数据返回给ColdFusion,尽管当我运行被添加到SQL Server临时表中的SQL查询部分时,它的工作原理类似于魅力。我想要做的只是向ColdFusion返回一个简单的表格,并确保我以最有效的方式编码。
我试过了: - 使用Return语句,但是这似乎会在RAM表(@)中产生语法错误。 - 使用持久临时表(#) - 虽然各种在线论坛似乎认为通过使用这个应用程序需要一个很大的性能打击这样做。 (每个人都是批评家)
我的目标是: - 学习此过程以及尽可能多地重复使用它 - 学习正确的方法来完成此操作,以便查询也可以执行尽可能。 - 了解我在SPROCS中使用(@)和(#)临时表的情况以及原因。有些人认为持久临时表(#)更好,因为它可以释放编译期间触发的其他sprocs,而其他人认为让服务器去硬盘写入数据会更慢。 - 明白为什么下面的语法不起作用
目前我CFML代码如下所示:
<!--- ===========================================================================================================================
================================================= Page Resources ================================================================
=============================================================================================================================--->
<CFSTOREDPROC datasource="PoliticalDonationsDB" procedure=" sp_GetCurrentDonationCount_withDateRange" result="DONATIONCOUNT">
<!--- In --->
<cfprocparam cfsqltype="INT" dbvarname="SDate" value="2004">
<cfprocparam cfsqltype="INT" dbvarname="EDate" value="2005">
<!--- OUT --->
<cfprocresult name="DonationCount">
</CFSTOREDPROC>
<!--- ===========================================================================================================================
================================================= Page Display ==================================================================
=============================================================================================================================--->
<HTML>
<HEAD>
<TITLE><CFOUTPUT>Title</CFOUTPUT></TITLE>
</HEAD>
<BODY>
<div id="logo">
</div><!--- End logo div --->
<div id="currentRecords">
<CFDUMP var="#VARIABLES#">
<CFDUMP VAR="#DONATIONCOUNT#">
</div><!---End currentRecords--->
<div id="navigation">
<ul>
<li>Companies</li>
<ul>
<li></li>
</ul>
</ul>
</div><!--- End navigation div--->
<div id="statisticsTab">
</div> <!--- End Statistics div--->
</BODY>
</HTML>
和我的SQL Server的代码如下所示:
Use Politics
GO
ALTER procedure sp_GetCurrentDonationCount_withDateRange
@SDate AS int,
@EDate AS int
AS
BEGIN
--Create RAM Table
DECLARE @DonationCountTable TABLE
(donationKey INT,
CompanyKey INT,
SenatorKey INT,
donationAmount MONEY,
donationDateFY INT
)
--Put the stuff into the RAM table
INSERT INTO @DonationCountTable (donationKey, CompanyKey, SenatorKey, donationAmount, donationDateFY)
SELECT * FROM PoliticalDontations
WHERE donationDateFY BETWEEN @SDate AND @EDate
ORDER BY donationDateFY, CompanyKey ASC
--Get the stuff out of the RAM Table
SELECT * FROM @DonationCountTable
END
dbvarname被弃用的ColdFusion 8的它什么都不做:http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_p- q_14.html – 2012-07-10 21:17:30