Попал в проблему сегодня, пытаясь создать хранимую процедуру от топора.Создайте хранимая процедура из x ++
Вот простой пример:
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 и некоторые строки CONCAT с большим количеством | ' а также "".
Во всяком случае, вот что я получил:
За пару часов я постоянно меняется, и повторить попытку много вещей и, хорошая мысль пришла мне в голову.
«Давайте попробуем с гораздо более легким примером и проверим результаты!»
ОК, не повезло, результаты были такими же, как вы можете видеть на рис. Выше.
Но без причины, я пытался:
exec testproc
в моем случае ВСС и к моему удивлению, это сработало. Моя небольшая процедура была там.
Было бы так приятно, если бы кто-то мог объяснить это поведение и, может быть, какой должен быть правильный подход.
ли эта помощь: http://stackoverflow.com/questions/12184152/how-to-get-the-results-of-a-direct-sql-call-to- a-stored-procedure ('executeQuery' vs' executeUpdate'). Не в коробке с разработчиками, поэтому не может вникать в вопрос. –
Спасибо большое, AlexUpdate сделал трюк очень хорошо, и я понял причины. Можете ли вы, пожалуйста, отправить комментарий в ответ, чтобы я мог его принять? Большое спасибо Ян Б. Кьельдсен тоже. Я действительно был потерян на этом :) –
Рад, что я мог помочь, уложился в качестве ответа. –