仅从Matlab运行存储过程返回1行

时间:2013-09-13 06:56:06

标签: mysql matlab mysql-workbench

我正在使用matlab从mysql数据库中检索数据。

conn=database('my_database','','');
sql = 'call latest_hl_tradables()';
curs = exec(conn,sql);   
curs = fetch(curs);  

昨天,代码返回了600行。今天早上,它返回1行。如果我在MySQL Workbench中运行存储过程(latest_hl_tradables),它仍然会返回600行。

2 个答案:

答案 0 :(得分:0)

奇怪的是,代码又开始工作了。

我所做的就是编写一些诊断代码来计算latest_hl_tradables()查询的表中的记录数。最初那些只返回1行。然后当他们开始返回所有行时。我不知道发生了什么变化。

答案 1 :(得分:0)

(我的配置是R2014b / SQL Server 2014 / MS JDBC 4.0。我认为OP描述了一个通用问题,而不是数据库供应商特定的问题)

我还在MATLAB中从返回结果集的存储过程中经历了不可靠的结果。我向Mathworks提交了服务请求。简短的回答是,在这个用例中,matlab数据库工具箱函数exec或runstoredprocedure都不合适。相反,应该通过runsqlscript从MATLAB调用存储过程。这是科技的回应:

  

不幸的是,无法使用。获取查询的输出       游标对象。获取DML输出的唯一方法是运行       他们作为一个脚本。语法是:

    >>results = runsqlscript(connObject,'ScriptName.sql')

where the SQL queries are placed in the file "ScriptName.sql". 
This will return cell array of results as the output

请注意,当您的存储过程需要输入参数时,此解决方案会使生命变得复杂。在典型情况下,sp参数不是先验已知的,这意味着您必须即时生成自定义SQL脚本。把它写到磁盘上。