0
votes

Comment appeler une procédure stockée dans la base de données DB2 de Spark Scala

Je dois appeler un PROC stocké dans DB2 qui prend 3 arguments et retourne un entier. Quelqu'un peut-il m'aider à appeler ce SP du code Spark Scala. Vous trouverez ci-dessous la procédure stockée dans db2.

DB@ SQL Error: SQLCODE=-104, SQLSTATE=42601
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601


1 commentaires

Pas possible...


3 Réponses :


0
votes

Je pense que vous devriez utiliser une connexion JDBC directement au lieu de l'étincelle, car votre procédure stockée ne renvoie qu'une entière. Si vous avez besoin de cette valeur, vous pouvez récupérer cela de l'appel à la procédure stockée, mais en utilisant SCALA sans utiliser Spark.

Vous pouvez trouver un échantillon à HTTPS : //www.ibm.com/support/nowledgeCenter/ssepek_12.0.0/java/src/tpc/imjcc_tjvcsp.html

C'est le moyen standard de l'appeler dans n'importe quelle langue:

  • Si vous devez remplacer les paramètres, vous pouvez utiliser la préparation comme décrit sur le lien ci-dessus
  • Attribuez les valeurs de paramètres avec le registreParameter (in ou Out)
  • Exécutez l'exécuteur aspers que votre SP renvoie un entier
  • Fermer la connexion

0 commentaires

0
votes

Je recommande SCANKIJDBC

Coordonnées Maven (Scala 2.11): Org.scalikeJDBC: SCOPIDJDBC_2. 11: 3.4.1 CODE> P>

sql"""(CALL TEST_PROC('2020-07-08','TEST',''TEST','TEST,?)) 
as proc_result;""".execute.apply()


0 commentaires

0
votes

Vous ne pouvez pas appeler la procédure stockée à l'aide d'Apache Spark, bien que chargez les mêmes données à l'aide de la charge d'étincelle

chargée Fron DB2 P>

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val df= sqlContext.load("jdbc", Map(
                       "url" -> "jdbc:db2://xx.xx.xx.xx:50000/SQLDB:securityMechanism=9;currentSchema=vaquarkhan;user=<ur-username>;password=xxxxx;",
        "driver" -> "com.ibm.db2.jcc.DB2Driver",
        "dbtable" -> "scheam.TableName"))


0 commentaires