ColdFusion 9 CFScript查询多个ID的问题

4

如何使用CFScript在值列表中进行获取。如果我传递一个id,下面的代码可以工作,但是如果要传递多个id怎么办?

// Get Modules By IDs
function getModulesByIDs(string dsn,required numeric pIDS) {
     // Setup a variable for the Query Result
    var qResult = '';
    // Setup the Query variable
    var q= new query();
    // Add Parameter 
    q.addParam(name="ID", value=arguments.pIDS, cfsqltype="CF_SQL_INTEGER");
    // Create the SQL String
    var sqlString="
            SELECT    ROLEID,
                      ROLENAME,
                      NAME,
                      MODULENAME
            FROM      MODULEROLE
            WHERE     
                      MODULEIDS IN :ID
        ";
    q.setdatasource(arguments.pDsn);
    q.setsql(sqlString);
    qResult=q.execute().getresult();
    return qResult;  
}
1个回答

7
使用list属性来指示value包含多个id,并添加括号来构造正确的IN(..)子句。
q.addParam(name="ID", value=arguments.pIDS, cfsqltype="CF_SQL_INTEGER", list="true");
...
var sqlString="... WHERE MODULEIDS IN (:ID )";

有没有类似的东西可以在排序语句中使用参数? - Nathan Stanford
不。绑定参数可以防止值被评估为 SQL。因此,它们不能用于替换对象名称,例如 ORDER BY 子句中的列名。 - Leigh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接