2016-12-01 13 views
0

私はgoogle appsスクリプトで以下のコードを使用して、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); 

は、私に知らせてください。

関連する問題