Why does fetch command for sql query fail but runsqlscript work?

2 ビュー (過去 30 日間)
Bryan Yu
Bryan Yu 2016 年 1 月 14 日
コメント済み: Tushar Athawale 2016 年 3 月 9 日
I am connecting to a PostgresQL compliant database and am unable to use the fetch command. It returns a "Invalid fetch cursor". However, if I run the same query using runsqlscript with a *.sql file, it works.
conn=database('dbname','user','pwd','postgresql-9.4.1207','jdbc:address');
resultsFail=fetch(conn,sqlquery); # Returns 'Invalid fetch cursor'
resultsGood=runsqlscript(conn,'test.sql');
# Returns
date
------------
2016-01-14

採用された回答

Bryan Yu
Bryan Yu 2016 年 1 月 19 日
The answer is that there is a bug in MATLAB 2015b. In order to get this to work use set(conn, 'AutoCommit', 'off').
  1 件のコメント
Tushar Athawale
Tushar Athawale 2016 年 3 月 9 日
This bug has been fixed in MATLAB R2016a.

サインインしてコメントする。

その他の回答 (1 件)

Tushar Athawale
Tushar Athawale 2016 年 1 月 18 日
Hi Bryan,
The error you are receiving is most likely due to invalid database connection or invalid SQL query. In order to troubleshoot the issue regarding the "fetch" command:
1) What is the value of the 'Message' property of the database connection? In your example, it can be checked using the following command:
>> conn.Message
2) What is the exact SQL query that you are trying to execute?
3) Please try fetching data from the database using alternative workflow as provided on: http://www.mathworks.com/help/database/ug/importing-data-using-the-fetch-function.html. In your example, please execute the following MATLAB commands:
>> curs = exec(conn,sqlquery)
>> curs = fetch(curs)
Can you execute the above commands successfully? If not, what is the exact error message that you are receiving?
  1 件のコメント
Bryan Yu
Bryan Yu 2016 年 1 月 18 日
1.
>> conn.Message
ans =
[]
2. As of now I'm just trying to run a simple query to verify connection.
'select current_date'
3. These commands are executed successfully but the curs object after running:
>> curs = fetch(curs)
cursor with properties:
Attributes: []
Data: 0
DatabaseObject: [1x1 database]
RowLimit: 0
SQLQuery: 'select current_date'
Message: 'Invalid fetch cursor.'
Type: 'Database Cursor Object'
ResultSet: 0
Cursor: 0
Statement: [1x1 com.amazon.redshift.core.jdbc41.PGJDBC41Statement]
Fetch: [1x1 com.mathworks.toolbox.database.fetchTheData]

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by