Why does sqlwrite function not support BINARY_FLOAT and BINARY_DOUBLE datatypes provided by Oracle
조회 수: 5 (최근 30일)
이전 댓글 표시
MathWorks Support Team
2018년 4월 6일
답변: MathWorks Support Team
2018년 4월 18일
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.
채택된 답변
MathWorks Support Team
2018년 4월 6일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Reporting and Database Access에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!