1

Попал в проблему сегодня, пытаясь создать хранимую процедуру от топора.Создайте хранимая процедура из 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 с большим количеством | ' а также "".

Во всяком случае, вот что я получил:

enter image description here

За пару часов я постоянно меняется, и повторить попытку много вещей и, хорошая мысль пришла мне в голову.

«Давайте попробуем с гораздо более легким примером и проверим результаты!»

ОК, не повезло, результаты были такими же, как вы можете видеть на рис. Выше.

Но без причины, я пытался:

exec testproc 

в моем случае ВСС и к моему удивлению, это сработало. Моя небольшая процедура была там.

Было бы так приятно, если бы кто-то мог объяснить это поведение и, может быть, какой должен быть правильный подход.

+0

ли эта помощь: http://stackoverflow.com/questions/12184152/how-to-get-the-results-of-a-direct-sql-call-to- a-stored-procedure ('executeQuery' vs' executeUpdate'). Не в коробке с разработчиками, поэтому не может вникать в вопрос. –

+0

Спасибо большое, AlexUpdate сделал трюк очень хорошо, и я понял причины. Можете ли вы, пожалуйста, отправить комментарий в ответ, чтобы я мог его принять? Большое спасибо Ян Б. Кьельдсен тоже. Я действительно был потерян на этом :) –

+0

Рад, что я мог помочь, уложился в качестве ответа. –

ответ

Смежные вопросы