create_table.c 889 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include <grass/dbmi.h>
  2. #include "odbc.h"
  3. #include "globals.h"
  4. #include "proto.h"
  5. int db__driver_create_table(dbTable * table)
  6. {
  7. dbString sql;
  8. cursor *c;
  9. char msg[OD_MSG];
  10. char *emsg = NULL;
  11. SQLRETURN ret;
  12. SQLINTEGER err;
  13. G_debug(3, "db__driver_create_table()");
  14. db_init_string(&sql);
  15. db_table_to_sql(table, &sql);
  16. G_debug(3, " SQL: %s", db_get_string(&sql));
  17. c = alloc_cursor();
  18. if (c == NULL)
  19. return DB_FAILED;
  20. ret = SQLExecDirect(c->stmt, db_get_string(&sql), SQL_NTS);
  21. if ((ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO)) {
  22. SQLGetDiagRec(SQL_HANDLE_STMT, c->stmt, 1, NULL, &err, msg,
  23. sizeof(msg), NULL);
  24. db_d_append_error("SQLExecDirect():\n%s\n%s (%d)\n",
  25. db_get_string(&sql), msg, (int)err);
  26. db_d_report_error();
  27. G_free(emsg);
  28. return DB_FAILED;
  29. }
  30. free_cursor(c);
  31. return DB_OK;
  32. }