今天我遇到了麻烦,试图用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和一些字符串,其中包含了大量的“\”和"“。
总之,我得到的是:

几个小时以来,我不断地改变和重新尝试许多事情,一个好的想法出现在我的脑海中。
“让我们尝试一个简单得多的例子,并检查结果!”
好吧,没有运气,结果是一样的,你可以在上面的图片中看到。
但无缘无故,我试图:
exec testproc在我的ssms实例中,令我惊讶的是,它起了作用。我的小手术就在那里。
如果有人能解释这种行为,或者什么是正确的方法,那就太好了。
发布于 2016-11-24 16:09:15
这个问答应该提供一个答案。How to get the results of a direct SQL call to a stored procedure?
executeQuery对executeUpdate
https://stackoverflow.com/questions/40775393
复制相似问题