@miatechnet/node-odbc 2.4.17 → 2.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/odbc.d.ts CHANGED
@@ -91,8 +91,8 @@ declare namespace odbc {
91
91
  query<T, O extends QueryOptions>(sql: string, options: O, callback: (error: NodeOdbcError, result: O extends CursorQueryOptions ? Cursor : Result<T>) => undefined): undefined;
92
92
  query<T, O extends QueryOptions>(sql: string, parameters: Array<number|string>, options: O, callback: (error: NodeOdbcError, result: O extends CursorQueryOptions ? Cursor : Result<T>) => undefined): undefined;
93
93
 
94
- callProcedure<T>(catalog: string|null, schema: string|null, name: string, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
95
- callProcedure<T>(catalog: string|null, schema: string|null, name: string, parameters: Array<number|string>, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
94
+ callProcedure<T>(catalog: string|null, schema: string|null, name: string, callback: (error: NodeOdbcError, result: Array<Result<T>>) => undefined): undefined;
95
+ callProcedure<T>(catalog: string|null, schema: string|null, name: string, parameters: Array<number|string>, callback: (error: NodeOdbcError, result: Array<Result<T>>) => undefined): undefined;
96
96
 
97
97
  createStatement(callback: (error: NodeOdbcError, statement: Statement) => undefined): undefined;
98
98
 
@@ -122,7 +122,7 @@ declare namespace odbc {
122
122
  query<T, O extends QueryOptions>(sql: string, options: O): O extends CursorQueryOptions ? Promise<Cursor> : Promise<Result<T>>;
123
123
  query<T, O extends QueryOptions>(sql: string, parameters: Array<number|string>, options: O): O extends CursorQueryOptions ? Promise<Cursor> : Promise<Result<T>>;
124
124
 
125
- callProcedure<T>(catalog: string|null, schema: string|null, name: string, parameters?: Array<number|string>): Promise<Result<T>>;
125
+ callProcedure<T>(catalog: string|null, schema: string|null, name: string, parameters?: Array<number|string>): Promise<Array<Result<T>>>;
126
126
 
127
127
  createStatement(): Promise<Statement>;
128
128
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@miatechnet/node-odbc",
3
3
  "description": "unixodbc bindings for node - Fork with multi-result set support for stored procedures",
4
- "version": "2.4.17",
4
+ "version": "2.4.19",
5
5
  "homepage": "https://github.com/ppimentela/node-odbc/",
6
6
  "main": "lib/odbc.js",
7
7
  "types": "lib/odbc.d.ts",
@@ -1887,6 +1887,25 @@ class CallProcedureAsyncWorker : public ODBCAsyncWorker {
1887
1887
  return;
1888
1888
  }
1889
1889
 
1890
+ // Skip result sets with no columns (e.g., from INSERT/UPDATE/SET statements)
1891
+ if (data->column_count == 0) {
1892
+ // No columns means this is not a SELECT-like result set, skip it
1893
+ return_code = SQLMoreResults(data->hstmt);
1894
+ if (return_code == SQL_NO_DATA) {
1895
+ hasMoreResults = false;
1896
+ } else if (!SQL_SUCCEEDED(return_code)) {
1897
+ this->errors = GetODBCErrors(SQL_HANDLE_STMT, data->hstmt);
1898
+ SetError("[odbc] Error getting more results\0");
1899
+ return;
1900
+ }
1901
+
1902
+ // Set fetch size for the next result set
1903
+ if (hasMoreResults) {
1904
+ set_fetch_size(data, data->fetch_size);
1905
+ }
1906
+ continue;
1907
+ }
1908
+
1890
1909
  // Obtener todos los datos del result set actual
1891
1910
  return_code = fetch_all_and_store(
1892
1911
  data,
@@ -1988,6 +2007,25 @@ class CallProcedureAsyncWorker : public ODBCAsyncWorker {
1988
2007
  data->bound_columns = NULL;
1989
2008
  data->row_status_array = NULL;
1990
2009
 
2010
+ // Set metadata properties on the outer allResults array for backward compatibility
2011
+ if (data->sql != NULL) {
2012
+ #ifdef UNICODE
2013
+ allResults.Set(Napi::String::New(env, STATEMENT), Napi::String::New(env, (const char16_t*)data->sql));
2014
+ #else
2015
+ allResults.Set(Napi::String::New(env, STATEMENT), Napi::String::New(env, (const char*)data->sql));
2016
+ #endif
2017
+ } else {
2018
+ allResults.Set(Napi::String::New(env, STATEMENT), env.Null());
2019
+ }
2020
+
2021
+ if (napiParameters.IsEmpty()) {
2022
+ allResults.Set(Napi::String::New(env, PARAMETERS), env.Undefined());
2023
+ } else {
2024
+ allResults.Set(Napi::String::New(env, PARAMETERS), napiParameters.Value());
2025
+ }
2026
+
2027
+ allResults.Set(Napi::String::New(env, RETURN), env.Undefined());
2028
+
1991
2029
  std::vector<napi_value> callbackArguments;
1992
2030
  callbackArguments.push_back(env.Null());
1993
2031
  callbackArguments.push_back(allResults);