Why does sqlwrite function not support BINARY_FLOAT and BINARY_DOUBLE datatypes provided by Oracle
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 6 Avr 2018
Réponse apportée : MathWorks Support Team
le 18 Avr 2018
When sqlwrite function is used to insert BINARY_FLOAT or BINARY_DOUBLE datatypes as given in following code snippet
>>sqlquery = ['CREATE TABLE MyOracleTable(myBinaryFloatValue BINARY_FLOAT)'];
>>exec(conn,sqlquery); % "conn" is the Database Connection object
>>myMLTable = table(1,'VariableNames',{'myBinaryFloatValue'});
>>sqlwrite(conn,'MyOracleTable',myMLTable);
MATLAB throws following error:
Error using database.jdbc.connection/sqlwrite (line 172)
JDBC JDBC/ODBC Error: java.lang.Double cannot be cast to oracle.sql.BINARY_FLOAT.
Réponse acceptée
MathWorks Support Team
le 6 Avr 2018
Converting MATLAB numeric datatypes to BINARY_FLOAT or BINARY_DOUBLE is not currently supported by "sqlwrite", mainly because these data types are not part of the ANSI-supported SQL types.
As a workaround, directly convert the data to BINARY_FLOAT before passing it to "sqlwrite" as follows:
>>myMLTable = table([oracle.sql.BINARY_FLOAT(3);oracle.sql.BINARY_FLOAT(4)] ,'VariableNames',{'myBinaryFloatValue'});
>>sqlwrite(conn,'MyOracleTable',myMLTable );
Please note that for this workaround to work, the table 'MyOracleTable' should already exist in the database.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Reporting and Database Access dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!