首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coldfusion CFSTOREDPROC不返回表

问Coldfusion CFSTOREDPROC不返回表
EN

Stack Overflow用户
提问于 2012-07-11 05:05:08
回答 2查看 1.2K关注 0票数 2

我正在使用Coldfusion 9和SQL Server2008。我正在努力学习这些平台,并真正了解如何有效地利用这两个平台来实现报告解决方案。我在使用存储过程或sprocs时遇到了一些很大的挑战。我想要的是一个非常简单的答案,让我的sprocs达到可以在CFML中利用它们的程度,并将数据提供给需要它的人。

我在网上做了一些研究,SQL Server2008似乎利用了放置在RAM中的临时表(@)或本地用户写入磁盘的临时表(#)。我的问题是,我似乎无法让生成的临时表将数据从流程调用返回给ColdFusion,尽管当我运行添加到SQL Server中临时表的那部分SQL查询时,它的工作方式非常出色。我所要做的就是将一个简单的表返回给ColdFusion,并确保我以最高效的方式对其进行编码。

我尝试过:-使用Return语句,但这似乎会产生RAM表(@)的语法错误。-使用持久临时表(#) -尽管各种在线论坛似乎认为这样做会对应用程序的性能造成很大的影响。(每个人都是评论家。)

我的目标是:-尽可能好地学习这个过程,尽可能多地重用它-学习正确的方法来做到这一点,以便查询尽可能好地执行。-了解我在SPROCS中使用(@)和(#)临时表的情况以及原因。一些人认为持久临时表(#)更好,因为它为编译期间触发的其他sprocs释放了内存,而另一些人则认为让服务器到硬盘上写入数据会更慢。-理解为什么下面的语法不起作用

目前,我的CFML代码如下所示:

代码语言:javascript
复制
<!--- ===========================================================================================================================
================================================= 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代码如下所示:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-11 05:18:55

你需要这样做:

代码语言:javascript
复制
<cfprocparam cfsqltype="CF_SQL_INTEGER" value="2004">

DBVARNAME已弃用:

http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_p-q_14.html

以下是可接受的CFSQLTYPES列表

代码语言:javascript
复制
CF_SQL_BIGINT
CF_SQL_BIT
CF_SQL_BLOB
CF_SQL_CHAR
CF_SQL_CLOB
CF_SQL_DATE
CF_SQL_DECIMAL
CF_SQL_DOUBLE
CF_SQL_FLOAT
CF_SQL_IDSTAMP
CF_SQL_INTEGER
CF_SQL_LONGVARCHAR
CF_SQL_MONEY
CF_SQL_MONEY4
CF_SQL_NUMERIC
CF_SQL_REAL
CF_SQL_REFCURSOR
CF_SQL_SMALLINT
CF_SQL_TIME
CF_SQL_TIMESTAMP
CF_SQL_TINYINT
CF_SQL_VARCHAR
票数 3
EN

Stack Overflow用户

发布于 2012-07-11 05:11:31

尝试:

代码语言:javascript
复制
 <cfprocparam cfsqltype="INT" dbvarname="@SDate" value="2004">
 <cfprocparam cfsqltype="INT" dbvarname="@EDate" value="2005">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11421933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档