Skip to content

Commit

Permalink
odbc_write_table: describe parameters only if column data is coherent
Browse files Browse the repository at this point in the history
Also fixup formatting of Oracle specific odbcConnectionColumns
implementation.
  • Loading branch information
detule committed Jul 8, 2023
1 parent eeccc2c commit 9113219
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
7 changes: 4 additions & 3 deletions R/Table.R
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ odbc_write_table <-
fieldDetails <- tryCatch({
details <- odbcConnectionColumns(conn, name)
details$param_index <- match(details$name, names(values))
details[!is.na(details$param_index), ]
details[!is.na(details$param_index) & !is.na(details&data_type), ]
}, error = function(e) {
return(NULL)
})
Expand All @@ -79,15 +79,16 @@ odbc_write_table <-

name <- dbQuoteIdentifier(conn, name)
fields <- dbQuoteIdentifier(conn, names(values))
params <- rep("?", length(fields))
nparam <- length(fields)
params <- rep("?", nparam)

sql <- paste0(
"INSERT INTO ", name, " (", paste0(fields, collapse = ", "), ")\n",
"VALUES (", paste0(params, collapse = ", "), ")"
)
rs <- OdbcResult(conn, sql)

if (!is.null(fieldDetails) && nrow(fieldDetails)) {
if (!is.null(fieldDetails) && nrow(fieldDetails) == nparam) {
result_describe_parameters(rs@ptr, fieldDetails)
}

Expand Down
3 changes: 2 additions & 1 deletion R/db.R
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ setMethod(
owner AS \"schema_name\",
null AS \"catalog_name\",
null AS \"data_type\",
decode(data_type,'CHAR',char_length,'NCHAR',char_length, 'VARCHAR2',char_length,'NVARCHAR2',char_length, 'RAW',data_length, 'ROWID', data_length, 'UNDEFINED', 0, data_precision) AS \"column_size\", decode(data_type, 'DATE',16,'FLOAT',8,'BINARY_FLOAT',4,'BINARY_DOUBLE',8,'LONG RAW',2147483647,'LONG',2147483647,'CLOB',2147483647,'NCLOB',2147483647,'BLOB',2147483647,'BFILE',2147483647,'CHAR',data_length,'NCHAR',data_length,'VARCHAR2',data_length,'NVARCHAR2',data_length,'NUMBER',NVL(data_precision+2,40),data_length) AS \"buffer_length\",
decode(data_type,'CHAR',char_length,'NCHAR',char_length, 'VARCHAR2',char_length,'NVARCHAR2',char_length, 'RAW',data_length, 'ROWID', data_length, 'UNDEFINED', 0, data_precision) AS \"column_size\",
decode(data_type, 'DATE',16,'FLOAT',8,'BINARY_FLOAT',4,'BINARY_DOUBLE',8,'LONG RAW',2147483647,'LONG',2147483647,'CLOB',2147483647,'NCLOB',2147483647,'BLOB',2147483647,'BFILE',2147483647,'CHAR',data_length,'NCHAR',data_length,'VARCHAR2',data_length,'NVARCHAR2',data_length,'NUMBER',NVL(data_precision+2,40),data_length) AS \"buffer_length\",
data_scale AS \"decimal_digits\",
null AS \"numeric_precision_radix\",
null AS \"remarks\",
Expand Down

0 comments on commit 9113219

Please sign in to comment.