我有以下情况:
目标: 我想从数据仓库(Microsoft SQL Server Management Studio 2008)获取数据,并在Matlab(R2012b)中继续这些数据。我正在使用Windows机器。
问题: 我写了一些代码行,从数据仓库中提取数据。但是,不知怎的,它不起作用。 但是,以下代码正常工作:
% Make connection to server. Note that the password has been omitted.
% Using ODBC driver.
conn = database('server1','','password');
% Read data from database.
e=exec(conn, strcat('SELECT ''test'',[PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE] [CUR_CD],SUM([V1]) [V1],SUM([V2]) [V2],CASE WHEN SUM([V2])>0 THEN SUM([V1])/SUM([V2]) ELSE 0 END ZNET_CHANGE FROM [server2].[CatRPT].[dat].[MASTERTABLE] WHERE DETAILED=1 AND ( [RPT_ID1_LV1_SHORT_NM]=''test'' OR [RPT_ID1_LV2_SHORT_NM]=''test'' OR [RPT_ID1_LV3_SHORT_NM]=''test'' OR [RPT_ID1_LV4_SHORT_NM]=''test'') AND CNTRY_CD=''string1'' AND PRL_CD=''string2'' GROUP BY [PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE],[CUR_CD]'));
e = fetch(e);
close(e);
% Assign data to output variable.
netpercresta = e.Data;
% Close database connection.
close(conn);
现在,我想实现一个动态变量。这意味着我想替换字符串' test'在上面的代码中有一个变量。我的尝试如下:
variable='test'
% Make connection to server. Note that the password has been omitted.
% Using ODBC driver.
conn = database('server1','','password');
% Read data from database.
e=exec(conn, strcat('SELECT ''' variable ''',[PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE] [CUR_CD],SUM([V1]) [V1],SUM([V2]) [V2],CASE WHEN SUM([V2])>0 THEN SUM([V1])/SUM([V2]) ELSE 0 END ZNET_CHANGE FROM [server2].[CatRPT].[dat].[MASTERTABLE] WHERE DETAILED=1 AND ( [RPT_ID1_LV1_SHORT_NM]=''' variable ''' OR [RPT_ID1_LV2_SHORT_NM]=''' variable ''' OR [RPT_ID1_LV3_SHORT_NM]=''' variable ''' OR [RPT_ID1_LV4_SHORT_NM]=''' variable ''') AND CNTRY_CD=''string1'' AND PRL_CD=''string2'' GROUP BY [PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE],[CUR_CD]'));
e = fetch(e);
close(e);
% Assign data to output variable.
netpercresta = e.Data;
% Close database connection.
close(conn);
第二种方法(包括变量)不起作用。 Matlab产生以下错误消息:
"错误:意外的MATLAB表达式。"。
意外的表达是 - 根据Matlab - 第一个"变量"在字符串中。
有谁知道如何解决这个问题?