我是ColdFusion的新手,我想从ASP.NET重写我的项目,逐步学习ColdFusion。
我的Server身份验证存储过程(ASP.NET)如下所示:
CREATE PROCEDURE sp_auth
@suser VARCHAR(20),
@spswd VARCHAR(20)
AS
SELECT COUNT(*) FROM Users.SUsers WHERE suname=@suser AND supasswd=@spswd AND off_bit=0
GOApplication.cfc片段。
<cfstoredproc procedure="sp_auth" datasource="cftraderelay">
<cfprocparam value="#cflogin.name#" cfsqltype="CF_SQL_VARCHAR" maxlength="20" type="in">
<cfprocparam value="#cflogin.password#" cfsqltype="CF_SQL_VARCHAR" maxlength="20" type="in">
<cfprocresult name="auth_pass" maxrows="1">
</cfstoredproc>
<cfif auth_pass GTE 1>
<cfloginuser name="#cflogin.name#" password = "#cflogin.password#" roles="#roles#">
<cfelse>
<cfoutput>
<h2>Your login information is not valid.<br> Please Try again</h2>
</cfoutput>
<cfinclude template="login.cfm">
<cfabort>
</cfif>什么是“auth_pass GTE 1”逻辑的正确形式?如何访问'auth_pass‘的值。因为我得到“复杂的对象类型不能转换为简单的值”错误到目前为止。
严格地说,在这种情况下,我应该使用out类型的cfprocparam,而不是cfprocresult (修改输出变量的SQL查询)吗?
我可以在cfif语句中访问cfprocresult值吗?
发布于 2014-02-04 09:14:02
auth_pass包含一个记录集,而不是一个数字,所以您不能将它与1进行比较。
检查变量内容的最佳工具是。如果遇到问题而无法猜出解决方案,请熟悉您正在使用的代码的文档,例如:、、 (查询对象的详细信息)。
https://stackoverflow.com/questions/21548007
复制相似问题