2
0

common.bmx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. ' Copyright (c) 2007-2022 Bruce A Henderson
  2. ' All rights reserved.
  3. '
  4. ' Redistribution and use in source and binary forms, with or without
  5. ' modification, are permitted provided that the following conditions are met:
  6. ' * Redistributions of source code must retain the above copyright
  7. ' notice, this list of conditions and the following disclaimer.
  8. ' * Redistributions in binary form must reproduce the above copyright
  9. ' notice, this list of conditions and the following disclaimer in the
  10. ' documentation and/or other materials provided with the distribution.
  11. ' * Neither the auther nor the names of its contributors may be used to
  12. ' endorse or promote products derived from this software without specific
  13. ' prior written permission.
  14. '
  15. ' THIS SOFTWARE IS PROVIDED BY Bruce A Henderson ``AS IS'' AND ANY
  16. ' EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  17. ' WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  18. ' DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
  19. ' DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  20. ' (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  21. ' LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  22. ' ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  23. ' (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  24. ' SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. '
  26. SuperStrict
  27. ?linux
  28. Import "source.bmx"
  29. Import "src/include/*.h"
  30. Import "-ldl"
  31. ?macos
  32. Import "source.bmx"
  33. Import "src/include/*.h"
  34. ?win32
  35. Import "-lodbc32"
  36. ?
  37. Import brl.blitz
  38. Const SQL_AM_CONNECTION:Int = 1
  39. Const SQL_AM_NONE:Int = 0
  40. Const SQL_AM_STATEMENT:Int = 2
  41. Const SQL_API_SQLALLOCHANDLE:Int = 1001
  42. Const SQL_API_SQLBINDPARAM:Int = 1002
  43. Const SQL_API_SQLCLOSECURSOR:Int = 1003
  44. Const SQL_API_SQLCOLATTRIBUTE:Int = 6
  45. Const SQL_API_SQLCOPYDESC:Int = 1004
  46. Const SQL_API_SQLENDTRAN:Int = 1005
  47. Const SQL_API_SQLFETCHSCROLL:Int = 1021
  48. Const SQL_API_SQLFREEHANDLE:Int = 1006
  49. Const SQL_API_SQLGETCONNECTATTR:Int = 1007
  50. Const SQL_API_SQLGETDESCFIELD:Int = 1008
  51. Const SQL_API_SQLGETDESCREC:Int = 1009
  52. Const SQL_API_SQLGETDIAGFIELD:Int = 1010
  53. Const SQL_API_SQLGETDIAGREC:Int = 1011
  54. Const SQL_API_SQLGETENVATTR:Int = 1012
  55. Const SQL_API_SQLGETSTMTATTR:Int = 1014
  56. Const SQL_API_SQLSETCONNECTATTR:Int = 1016
  57. Const SQL_API_SQLSETDESCFIELD:Int = 1017
  58. Const SQL_API_SQLSETDESCREC:Int = 1018
  59. Const SQL_API_SQLSETENVATTR:Int = 1019
  60. Const SQL_API_SQLSETSTMTATTR:Int = 1020
  61. Const SQL_ARD_TYPE:Int = -99
  62. Const SQL_AT_ADD_CONSTRAINT:Int = 8
  63. Const SQL_ATTR_APP_PARAM_DESC:Int = 10011
  64. Const SQL_ATTR_APP_ROW_DESC:Int = 10010
  65. Const SQL_ATTR_AUTO_IPD:Int = 10001
  66. Const SQL_ATTR_CURSOR_SCROLLABLE:Int = -1
  67. Const SQL_ATTR_CURSOR_SENSITIVITY:Int = -2
  68. Const SQL_ATTR_IMP_PARAM_DESC:Int = 10013
  69. Const SQL_ATTR_IMP_ROW_DESC:Int = 10012
  70. Const SQL_ATTR_METADATA_ID:Int = 10014
  71. Const SQL_ATTR_OUTPUT_NTS:Int = 10001
  72. Const SQL_CATALOG_NAME:Int = 10003
  73. Const SQL_CODE_DATE:Int = 1
  74. Const SQL_CODE_TIME:Int = 2
  75. Const SQL_CODE_TIMESTAMP:Int = 3
  76. Const SQL_COLLATION_SEQ:Int = 10004
  77. Const SQL_CURSOR_SENSITIVITY:Int = 10001
  78. Const SQL_DATE_LEN:Int = 10
  79. Const SQL_DATETIME:Int = 9
  80. Const SQL_DEFAULT:Int = 99
  81. Const SQL_DESC_ALLOC_AUTO:Int = 1
  82. Const SQL_DESC_ALLOC_TYPE:Int = 1099
  83. Const SQL_DESC_ALLOC_USER:Int = 2
  84. Const SQL_DESC_COUNT:Int = 1001
  85. Const SQL_DESC_DATA_PTR:Int = 1010
  86. Const SQL_DESC_DATETIME_INTERVAL_CODE:Int = 1007
  87. Const SQL_DESC_INDICATOR_PTR:Int = 1009
  88. Const SQL_DESC_LENGTH:Int = 1003
  89. Const SQL_DESC_NAME:Int = 1011
  90. Const SQL_DESC_NULLABLE:Int = 1008
  91. Const SQL_DESC_OCTET_LENGTH:Int = 1013
  92. Const SQL_DESC_OCTET_LENGTH_PTR:Int = 1004
  93. Const SQL_DESC_PRECISION:Int = 1005
  94. Const SQL_DESC_SCALE:Int = 1006
  95. Const SQL_DESC_TYPE:Int = 1002
  96. Const SQL_DESC_UNNAMED:Int = 1012
  97. Const SQL_DESCRIBE_PARAMETER:Int = 10002
  98. Const SQL_DIAG_ALTER_DOMAIN:Int = 3
  99. Const SQL_DIAG_ALTER_TABLE:Int = 4
  100. Const SQL_DIAG_CALL:Int = 7
  101. Const SQL_DIAG_CLASS_ORIGIN:Int = 8
  102. Const SQL_DIAG_CONNECTION_NAME:Int = 10
  103. Const SQL_DIAG_CREATE_ASSERTION:Int = 6
  104. Const SQL_DIAG_CREATE_CHARACTER_SET:Int = 8
  105. Const SQL_DIAG_CREATE_COLLATION:Int = 10
  106. Const SQL_DIAG_CREATE_DOMAIN:Int = 23
  107. Const SQL_DIAG_CREATE_INDEX:Int = -1
  108. Const SQL_DIAG_CREATE_SCHEMA:Int = 64
  109. Const SQL_DIAG_CREATE_TABLE:Int = 77
  110. Const SQL_DIAG_CREATE_TRANSLATION:Int = 79
  111. Const SQL_DIAG_CREATE_VIEW:Int = 84
  112. Const SQL_DIAG_DELETE_WHERE:Int = 19
  113. Const SQL_DIAG_DROP_ASSERTION:Int = 24
  114. Const SQL_DIAG_DROP_CHARACTER_SET:Int = 25
  115. Const SQL_DIAG_DROP_COLLATION:Int = 26
  116. Const SQL_DIAG_DROP_DOMAIN:Int = 27
  117. Const SQL_DIAG_DROP_INDEX:Int = -2
  118. Const SQL_DIAG_DROP_SCHEMA:Int = 31
  119. Const SQL_DIAG_DROP_TABLE:Int = 32
  120. Const SQL_DIAG_DROP_TRANSLATION:Int = 33
  121. Const SQL_DIAG_DROP_VIEW:Int = 36
  122. Const SQL_DIAG_DYNAMIC_DELETE_CURSOR:Int = 38
  123. Const SQL_DIAG_DYNAMIC_FUNCTION:Int = 7
  124. Const SQL_DIAG_DYNAMIC_FUNCTION_CODE:Int = 12
  125. Const SQL_DIAG_DYNAMIC_UPDATE_CURSOR:Int = 81
  126. Const SQL_DIAG_GRANT:Int = 48
  127. Const SQL_DIAG_INSERT:Int = 50
  128. Const SQL_DIAG_MESSAGE_TEXT:Int = 6
  129. Const SQL_DIAG_NATIVE:Int = 5
  130. Const SQL_DIAG_NUMBER:Int = 2
  131. Const SQL_DIAG_RETURNCODE:Int = 1
  132. Const SQL_DIAG_REVOKE:Int = 59
  133. Const SQL_DIAG_ROW_COUNT:Int = 3
  134. Const SQL_DIAG_SELECT_CURSOR:Int = 85
  135. Const SQL_DIAG_SERVER_NAME:Int = 11
  136. Const SQL_DIAG_SQLSTATE:Int = 4
  137. Const SQL_DIAG_SUBCLASS_ORIGIN:Int = 9
  138. Const SQL_DIAG_UNKNOWN_STATEMENT:Int = 0
  139. Const SQL_DIAG_UPDATE_WHERE:Int = 82
  140. ' handle types
  141. Const SQL_HANDLE_DBC:Int = 2
  142. Const SQL_HANDLE_DESC:Int = 4
  143. Const SQL_HANDLE_ENV:Int = 1
  144. Const SQL_HANDLE_STMT:Int = 3
  145. Const SQL_INSENSITIVE:Int = 1
  146. Const SQL_MAX_CONCURRENT_ACTIVITIES:Int = 1
  147. Const SQL_MAX_DRIVER_CONNECTIONS:Int = 0
  148. Const SQL_MAX_IDENTIFIER_LEN:Int = 10005
  149. Const SQL_MAXIMUM_CONCURRENT_ACTIVITIES:Int = SQL_MAX_CONCURRENT_ACTIVITIES
  150. Const SQL_MAXIMUM_DRIVER_CONNECTIONS:Int = SQL_MAX_DRIVER_CONNECTIONS
  151. Const SQL_MAXIMUM_IDENTIFIER_LENGTH:Int = SQL_MAX_IDENTIFIER_LEN
  152. Const SQL_NAMED:Int = 0
  153. Const SQL_NO_DATA:Int = 100
  154. Const SQL_NONSCROLLABLE:Int = 0
  155. Const SQL_NULL_HANDLE:Int = 0
  156. Const SQL_NULL_HDESC:Int = 0
  157. Const SQL_OJ_CAPABILITIES:Int = 115
  158. Const SQL_OUTER_JOIN_CAPABILITIES:Int = SQL_OJ_CAPABILITIES
  159. Const SQL_PC_NON_PSEUDO:Int = 1
  160. Const SQL_PRED_BASIC:Int = 2
  161. Const SQL_PRED_CHAR:Int = 1
  162. Const SQL_PRED_NONE:Int = 0
  163. Const SQL_ROW_IDENTIFIER:Int = 1
  164. Const SQL_SCROLLABLE:Int = 1
  165. Const SQL_SENSITIVE:Int = 2
  166. Const SQL_TIME_LEN:Int = 8
  167. Const SQL_TIMESTAMP_LEN:Int = 19
  168. ' booleans
  169. Const SQL_FALSE:Int = 0
  170. Const SQL_TRUE:Int = 1
  171. Const SQL_TYPE_DATE:Int = 91
  172. Const SQL_TYPE_TIME:Int = 92
  173. Const SQL_TYPE_TIMESTAMP:Int = 93
  174. Const SQL_UNNAMED:Int = 1
  175. Const SQL_UNSPECIFIED:Int = 0
  176. Const SQL_XOPEN_CLI_YEAR:Int = 10000
  177. Const SQL_UNKNOWN_TYPE:Int = 0
  178. Const SQL_CHAR:Int = 1
  179. Const SQL_NUMERIC:Int = 2
  180. Const SQL_DECIMAL:Int = 3
  181. Const SQL_INTEGER:Int = 4
  182. Const SQL_SMALLINT:Int = 5
  183. Const SQL_FLOAT:Int = 6
  184. Const SQL_REAL:Int = 7
  185. Const SQL_DOUBLE:Int = 8
  186. Const SQL_ALL_TYPES:Int = 0
  187. Const SQL_LONGVARCHAR:Int = -1
  188. Const SQL_BINARY:Int = -2
  189. Const SQL_VARBINARY:Int = -3
  190. Const SQL_LONGVARBINARY:Int = -4
  191. Const SQL_BIGINT:Int = -5
  192. Const SQL_TINYINT:Int = -6
  193. Const SQL_BIT:Int = -7
  194. Const SQL_GUID:Int = -11
  195. Const SQL_DATE:Int = 9
  196. Const SQL_TIME:Int = 10
  197. Const SQL_TIMESTAMP:Int = 11
  198. ' status values
  199. Const SQL_SUCCESS:Int = 0
  200. Const SQL_SUCCESS_WITH_INFO :Int = 1
  201. Const SQL_STILL_EXECUTING:Int = 2
  202. Const SQL_ERROR:Int = -1
  203. Const SQL_INVALID_HANDLE:Int = -2
  204. Const SQL_NEED_DATA:Int = 99
  205. 'Const SQL_NO_DATA:Int = 100
  206. Const SQL_NO_NULLS:Int = 0
  207. Const SQL_NULLABLE:Int = 1
  208. Const SQL_NULLABLE_UNKNOWN:Int = 2
  209. Const SQL_NULL_DATA:Int = -1
  210. Const SQL_DATA_AT_EXEC:Int = -2
  211. Const SQL_NO_TOTAL:Int = -4
  212. ?win32
  213. Extern "win32"
  214. ?linux
  215. Extern
  216. ?macos
  217. Extern
  218. ?
  219. ' Function SQLAllocHandle:Int(handleType:Int, inputHandle:Byte Ptr, outputHandle:Byte Ptr)
  220. End Extern
  221. Extern
  222. Function bmx_odbc_SQLAllocHandle:Int(_type:Int, a:Byte Ptr, handle:Byte Ptr)
  223. Function bmx_odbc_freeEnvHandle:Int(handle:Byte Ptr)
  224. Function bmx_odbc_freeStmtHandle:Int(handle:Byte Ptr)
  225. Function bmx_odbc_envError:String(envHandle:Byte Ptr, code:Int Ptr)
  226. Function bmx_odbc_connError:String(envHandle:Byte Ptr, code:Int Ptr)
  227. Function bmx_odbc_stmtError:String(envHandle:Byte Ptr, code:Int Ptr)
  228. Function bmx_odbc_setattr_odbc3(envHandle:Byte Ptr)
  229. Function bmx_odbc_SQLDriverConnect:Int(handle:Byte Ptr, connectString:Byte Ptr, connLength:Int)
  230. Function bmx_odbc_toggleTransaction:Int(handle:Byte Ptr, toggle:Int)
  231. Function bmx_odbc_commitTransaction:Int(handle:Byte Ptr)
  232. Function bmx_odbc_rollbackTransaction:Int(handle:Byte Ptr)
  233. Function bmx_odbc_disconnectAndFree(handle:Byte Ptr)
  234. Function bmx_odbc_SQLRowCount:Int(stmt:Byte Ptr, num:Int Ptr)
  235. Function bmx_odbc_setForwardCursor:Int(stmt:Byte Ptr)
  236. Function bmx_odbc_execute:Int(stmt:Byte Ptr, query:Byte Ptr, size:Int)
  237. Function bmx_odbc_SQLNumResultCols(stmt:Byte Ptr, count:Int Ptr)
  238. Function bmx_odbc_SQLDescribeCol:Int(stmt:Byte Ptr, column:Int, columnName:Byte Ptr, bufferLength:Int, ..
  239. nameLength:Int Ptr, dataType:Int Ptr, columnSize:Int Ptr, decimalDigits:Int Ptr, ..
  240. nullable:Int Ptr)
  241. Function bmx_odbc_SQLFetchScroll:Int(stmt:Byte Ptr)
  242. Function bmx_odbc_SQLGetData_int:Int(stmt:Byte Ptr, index:Int, value:Int Ptr, indicator:Int Ptr)
  243. Function bmx_odbc_SQLGetData_long:Int(stmt:Byte Ptr, index:Int, value:Long Ptr, indicator:Int Ptr)
  244. Function bmx_odbc_SQLGetData_double:Int(stmt:Byte Ptr, index:Int, value:Double Ptr, indicator:Int Ptr)
  245. Function bmx_odbc_SQLGetData_string:Int(stmt:Byte Ptr, index:Int, buffer:Byte Ptr, bufferLength:Int, indicator:Int Ptr)
  246. Function bmx_odbc_SQLGetData_datetime:Int(stmt:Byte Ptr, index:Int, y:Int Ptr, m:Int Ptr, d:Int Ptr, hh:Int Ptr, mm:Int Ptr, ss:Int Ptr, indicator:Int Ptr)
  247. Function bmx_odbc_SQLGetData_date:Int(stmt:Byte Ptr, index:Int, y:Int Ptr, m:Int Ptr, d:Int Ptr, indicator:Int Ptr)
  248. Function bmx_odbc_SQLGetData_time:Int(stmt:Byte Ptr, index:Int, hh:Int Ptr, mm:Int Ptr, ss:Int Ptr, indicator:Int Ptr)
  249. Function bmx_odbc_prepare:Int(stmt:Byte Ptr, query:Byte Ptr, size:Int)
  250. Function bmx_odbc_executePrepared:Int(stmt:Byte Ptr)
  251. Function bmx_odbc_SQLBindParameter_int:Int(stmt:Byte Ptr, index:Int, value:Int Ptr, isNull:Int Ptr)
  252. Function bmx_odbc_SQLBindParameter_double:Int(stmt:Byte Ptr, index:Int, value:Double Ptr, isNull:Int Ptr)
  253. Function bmx_odbc_SQLBindParameter_long:Int(stmt:Byte Ptr, index:Int, value:Long Ptr, isNull:Int Ptr)
  254. Function bmx_odbc_SQLBindParameter_string:Int(stmt:Byte Ptr, index:Int, value:Byte Ptr, length:Int, isNull:Int Ptr)
  255. Function bmx_odbc_SQLTables:Int(stmt:Byte Ptr, _type:Byte Ptr, length:Int)
  256. End Extern