2016-12-01 6 views
0

Ich verwende den folgenden Code in Google Apps-Skript, um Mitarbeiterdatensatz von einem Google-Blatt in eine MySQL-Datenbank einzufügen. Die gespeicherte Prozedur [dbo]. [Insertemployee] akzeptiert den Parameter "@empname".führen gespeicherte Prozedur in Google Apps-Skript

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();

Das bin ich diesen Fehler gibt @empname " "" Muss die skalare Variable deklarieren".

Antwort

1

Vielleicht liest das dir helfen könnten: Calling MySQL Stored Procedures from JDBC

Dies ist, wo man nichts falsch machen:

mysqlquery = mysqldbconn.prepareCall(vstrSQLStatement); 

Sie verwenden nicht das erklärte 'callstoredprocedure'.

lesen Beispiel unten:

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()); 
    } 
} 

Lassen Sie mich erklären: Die Abfrage definiert ist, ähnlich wie bei Ihrem Anruf annehmen 1 Parameter keinen Wert zurückgibt. Dann wird es verwendet in: conn.prepareCall(), und dann wird der Parameter auf die Anweisung gesetzt und dann wird er ausgeführt.

Wie ich bereits erwähnt, sollten Sie dies tun:

mysqlquery = mysqldbconn.prepareCall(callstoredprocedure); 

Bitte lassen Sie mich wissen, wenn das Ihr Problem behoben.