【问题标题】:Coldfusion: Can't reference var from query result setColdfusion:无法从查询结果集中引用 var
【发布时间】:2011-07-16 19:12:49
【问题描述】:

使用cfscript,尝试设置新插入问题的ID,以便我可以在我的答案插入中使用它来建立关系。我已经在 cfscript 之外做了一百万次。 setName 似乎是调用以创建查询名称的正确方法。

我收到 qryQuestion 中不存在“theQuestionID”的错误

i = 1; 
while ( structKeyExists( form, "question" & i ) ) 
{

    q = new Query();
    q.setDatasource("kSurvey");
    q.setName("qryQuestion");
    q.setSQL("
              set nocount on 
              insert into question (question) 
              values('#form["question#i#"]#')
              select @@IDENTITY AS theQuestionID
              set NOCOUNT off
              ");
    q.execute();

    writeOutput("Question"&i&"<br>");
    j = 1;
        while ( structKeyExists( form, "question" & i & "_answer" & j) ) {

            q = new Query();
            q.setDatasource("kSurvey");
            q.setSQL("
                      insert into answer (answer,questionid) 
                      values('#form["question#i#_answer#j#"]#',#qryQuestion.theQuestionID#)
                      ");
            q.execute();

            writeOutput("Answer"&j&"<br>");
            j++;
        }

i++; 
}

【问题讨论】:

  • 解决了,必须添加 result = q.execute(); qryQuestion = result.getResult();
  • Bob - 添加您的评论作为答案并为未来的读者接受它

标签: coldfusion


【解决方案1】:

有一种更好的方法来完成此操作,而无需选择 @@identity(这本身并不是从 sql server 获取它的最佳方法,使用 scope_identity 是在 sql server 中执行此操作的最佳实践方法。@987654321 @

幸运的是,ColdFusion 使这变得更加容易:

<cfscript>
    insertQuery = new query();

    insertQuery.setDatasource("datasourcename");

    insertQuery.setSql("insert into contact(firstname, lastname) 
           values('ryan','anklam')");

    result = insertQuery.Execute();

    theKey = result.getPrefix().generatedkey;
 </cfscript>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多