我必须遵循以下问题:
我有一个包含循环的matlab脚本。每个循环周期产生一个输出。此输出具有变量名称' outpt'。
在循环中的每个循环之后,我想取变量' outpt'的值。并将此值放在存储在数据仓库中的表中。
我正在使用:Matlab R2012b和Microsoft SQL Server Management Studio 2008
与SQL表的连接不是问题。我正在使用这些命令行:
%% LOAD SQL DATABASE
% Make connection to server. Note that the password has been omitted.
% Using ODBC driver.
conn = database('servername','','password');
% Read data from database.
e = exec(conn, strcat('INSERT INTO [Tablename].[ref].[REG] ([REGTYP_ID]) VALUES (5555)'));
e = fetch(e);
close(e);
% Assign data to output variable.
SQL_DATA = e.Data;
% Close database connection.
close(conn);
表中列的名称是([REGTYP_ID]。在上面的SQL字符串中,我将此值等于5555.我想通过变量替换数字&#39; 5555&#39; < / p>
variable=555
%% LOAD SQL DATABASE
% Make connection to server. Note that the password has been omitted.
% Using ODBC driver.
conn = database('servername','','password');
% Read data from database.
e = exec(conn, strcat('INSERT INTO [Tablename].[ref].[REG] ([REGTYP_ID]) VALUES (variable)'));
e = fetch(e);
close(e);
% Assign data to output variable.
SQL_DATA = e.Data;
% Close database connection.
close(conn);
但这不起作用。如何将Matlab中的变量传递给数据库?
问候。
答案 0 :(得分:0)
尝试以下方法:
variable=555
%% LOAD SQL DATABASE
% Make connection to server. Note that the password has been omitted.
% Using ODBC driver.
conn = database('servername','','password');
% Read data from database.
e = exec(conn, ['INSERT INTO [Tablename].[ref].[REG] ([REGTYP_ID]) VALUES ' num2str(variable)]);
e = fetch(e);
close(e);
% Assign data to output variable.
SQL_DATA = e.Data;
% Close database connection.
close(conn);
编辑:
我想括号中的所有内容都应该是一个变量,所以我们在这里:
[]用于连接字符串。
如果REGTYP_ID
已经是字符串,则无需将其转换为num2str()
的字符串。
所以你的查询看起来像
['INSERT INTO ' tablename '.' ref '.' REG ' ' variable2 ' ' VALUES ' ' num2str(variable1)]
EDIT2:
好的,我明白你现在想做什么。请下次考虑编辑原始问题,而不是在答案中发布问题。这一切都让人感到困惑。
让我们重新开始,你的例子过于复杂,我认为你可以更轻松地做你想做的事。
假设variable1是一个数字,而variable2是一个字符串。您的查询现在需要如下所示:
e = exec(conn, ['INSERT INTO [Tablename].[ref].[REG] ([Variable1],[Variable2]) VALUES (' num2str(variable1) ',' variable2 ')'] );