从x ++

时间:2016-11-23 22:45:13

标签: microsoft-dynamics dynamics-ax-2012 x++ dynamics-ax-2012-r3

今天在尝试使用ax创建存储过程时陷入困境。

这是一个简单的例子:

 static void testProcedureCreation(Args _args)
 {
     MyParamsTable myParams;
     SqlStatementExecutePermission perm;

     str sqlStatement;

     LogInProperty Lp = new LogInProperty();
     OdbcConnection myConnection;
     Statement myStatement;
     ResultSet myResult;
     str temp;
     ;

     select myParams;


     LP.setServer(myParams.Server);
     LP.setDatabase(myParams.Database);
     //Lp.setUsername("sa");
     //Lp.setPassword("sa");

      sqlStatement = @"create procedure testproc
                as begin

                print 'a'

                end";
     //sqlStatement = strFmt(sqlStatement, myStr);
     info(sqlStatement);
     perm = new SqlStatementExecutePermission(sqlStatement);

     perm.assert();

     try
     {
         myConnection = new OdbcConnection(LP);
     }
     catch
     {
        info("Check username/password.");
        return;
     }



     myStatement = myConnection.createStatement();
     myResult = myStatement.executeQuery(sqlStatement);

     while (myResult.next())
     {
        temp = myResult.getString(1);
        info(temp);

        if (strScan(temp, 'Error', 1, strLen(temp)) > 0)
            throw error(temp);
    }

    myStatement.close();

    CodeAccessPermission::revertAssert();
}

老实说,在我的实际例子中,我使用BCP和一些字符串连接很多| '和“”。

无论如何,这是我得到的:

enter image description here

几个小时后,我一直在改变并重试很多事情,我想到了一个很好的想法。

“让我们尝试一个更简单的例子并检查结果!”

好的,没有运气,结果是一样的,正如你在上面的图片中看到的那样。

但无缘无故,我试图:

exec testproc

在我的ssms实例中,令我惊讶的是,它有效。我的小程序就在那里。

如果有人能够解释这种行为并且可能是正确的方法,那就太好了。

1 个答案:

答案 0 :(得分:2)

此Q / A应该提供答案。 How to get the results of a direct SQL call to a stored procedure?

executeQuery vs executeUpdate