/
MProcedureColumn.scala
26 lines (22 loc) · 1.29 KB
/
MProcedureColumn.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package slick.jdbc.meta
import java.sql._
import slick.jdbc.{ResultSetAction, JdbcTypesComponent}
/** A wrapper for a row in the ResultSet returned by DatabaseMetaData.getProcedureColumns(). */
case class MProcedureColumn(
procedure: MQName, column: String, columnType: Short, sqlType: Int, typeName: String,
precision: Option[Int], length: Int, scale: Option[Short], radix: Short,
nullable: Option[Boolean], remarks: String, columnDef: Option[String], charOctetLength: Option[Int],
ordinalPosition: Option[Int], isNullable: Option[Boolean], specificName: Option[String]) {
def sqlTypeName = JdbcTypesComponent.typeNames.get(sqlType)
}
object MProcedureColumn {
def getProcedureColumns(procedurePattern: MQName, columnNamePattern: String = "%") = ResultSetAction[MProcedureColumn](
_.metaData.getProcedureColumns(procedurePattern.catalog_?, procedurePattern.schema_?,
procedurePattern.name, columnNamePattern) ) { r =>
MProcedureColumn(MQName.from(r), r.<<, r.<<, r.<<, r.<<, r.<<, r.<<, r.<<, r.<<, r.nextShort match {
case DatabaseMetaData.procedureNoNulls => Some(false)
case DatabaseMetaData.procedureNullable => Some(true)
case _ => None
}, r.<<, r.<<?, r.skip.skip.<<?, r.<<?, DatabaseMeta.yesNoOpt(r), r.<<?)
}
}