如何在Coldfusion10中只将一些参数传递给存储过程?

时间:2016-10-13 19:11:38

标签: coldfusion coldfusion-10

在2016年CF峰会上,建议不要使用cfquery标签调用存储过程,而是使用cfstoredproc。我有一个前一个程序员使用cfquery调用的proc,我想重写它以使用cfstoredproc。但是,proc有很多参数,我只想传递3,其余的都是默认值。但是,我们正在运行CF10,因此dbvarname不是cfprocparam的属性,并且在CF11之前不会添加回来。

关于安全性或执行速度,是否有任何理由我不应该以这种方式调用proc?:

<cfquery datasource="#application.dsn#" name="myResult">
    EXEC p_myProc
        @type_id=3
        ,@action_id=0
        ,@id=<cfqueryparam cfsqltype="cf_sql_integer" value="#id#" />
</cfquery>

我可以这样使用cfprocparam,确保我传递的参数是proc中定义的前三个并且顺序正确:

<cfstoredproc datasource="#application.dsn#" result="myResult" procedure="p_myProc">
    <cfprocparam cfsqltype="cf_sql_integer" value="3" />
    <cfprocparam cfsqltype="cf_sql_integer" value="0" />
    <cfprocparam cfsqltype="cf_sql_integer" value="#id#" />
</cfstoredproc>

但是,如果这3个参数在中间定义,或者不按直接顺序定义怎么办?我宁愿不必为每一个param传递一个值,因为那是很多的输入,我必须在proc中查找它们的默认值,这些默认值总是可以改变然后CF代码会超越他们。

0 个答案:

没有答案