2016-12-01 4 views
0

Я использую приведенный ниже код в сценарии приложений Google, чтобы вставить запись сотрудника из Листа Google в базу данных mysql. Хранимая процедура [dbo]. [Insertemployee] принимает параметр «@empname».выполнить хранимую процедуру в скрипте Google Apps

var empname = 'test'; 
 
    var mysqldbconn = Jdbc.getConnection(url,username,password); 
 
    var mysqlquery = mysqldbconn.createStatement(); 
 
    callstoredprocedure = "{call [dbo].[testemployee](?)}"; 
 
    mysqlquery = mysqldbconn.prepareCall(callstoredprocedure); 
 
    
 
    mysqlquery.setString(1, empname); 
 
    mysqlquery.executeUpdate();

Это дает мне эту ошибку "Необходимо объявить скалярную переменную "@empname"".

ответ

1

Возможно чтение это может помочь вам: Calling MySQL Stored Procedures from JDBC

Здесь вы ошибетесь:

mysqlquery = mysqldbconn.prepareCall(vstrSQLStatement); 

Вы не можете использовать заявленную 'callstoredprocedure'.

Читать пример ниже:

public static void getSkills(int candidateId) { 
    // 
    String query = "{ call get_candidate_skill(?) }"; 
    ResultSet rs; 

    try (Connection conn = MySQLJDBCUtil.getConnection(); 
      CallableStatement stmt = conn.prepareCall(query)) { 

     stmt.setInt(1, candidateId); 

     rs = stmt.executeQuery(); 
     while (rs.next()) { 
      System.out.println(String.format("%s - %s", 
        rs.getString("first_name") + " " 
        + rs.getString("last_name"), 
        rs.getString("skill"))); 
     } 
    } catch (SQLException ex) { 
     System.out.println(ex.getMessage()); 
    } 
} 

Поясню: Запрос определяется, похожий на ваш вызов принимающему 1 параметр не возвращается никакого значения. Затем он используется в: conn.prepareCall(), а затем параметр устанавливается в оператор, а затем выполняется.

Как я уже говорил, вы должны сделать это:

mysqlquery = mysqldbconn.prepareCall(callstoredprocedure); 

Пожалуйста, дайте мне знать, если это фиксированный вашу проблему.

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