我怎么能集成MATLAB和Oracle数据库生产服务器吗?

1视图(30天)
我在Oracle数据库定义了触发器MYTABLE1插入后。在这引发我想做一些计算插入数据,然后将结果插入MYTABLE2。执行这些计算我想利用我的MATLAB代码部署到一个MATLAB生产服务器(MPS)。这是可能的吗?

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2021年3月3日
介绍
通过议员Java客户机类和Oracle的服务器端Java功能这是绝对有可能叫议员从这样一个触发器。实际逐步示例如下所示但你按照这些步骤之前我想了解更多关于这两个接口:
一步一步的例子
在这个示例中,我们将部署一个简单的MATLAB函数将其输入由两个议员。我们将配置Oracle服务器以这样一种方式,只要数据插入| MYTABLE1 |执行触发器将调用这个议员函数计算的翻倍值插入数据,并将结果插入| MYTABLE2 |。
MATLAB
使用“生产服务器编译器应用”编制MATLAB函数如下:
函数y = timestwo (x)
y = 2 * x;
到一个叫做OracleExample.ctf CTF-archive。
国会议员
创建一个新的服务器实例使用| mps-new |并确保配置是正确的关于MCR的位置。本指南的其他假设所有其他配置选项保留为默认选项意味着使用端口9910。进一步我们将假设议员服务器和Oracle服务器位于同一台机器,所以我们可以使用| localhost |议员主机名。然后开始实例使用| mps-start |。现在复制| OracleExample。周大福|的| auto_deploy |目录。
Java
正确地验证议员服务器正在运行,实现以下Java类文件中命名| MPSClient.java |:
进口com.mathworks.mps.client.MATLABException;
进口com.mathworks.mps.client.MWClient;
进口com.mathworks.mps.client.MWHttpClient;
进口java.io.IOException;
进口java.net.MalformedURLException;
进口java.net.URL;
公共类MPSClient {
/ * *
*接口的OracleExample周大福存档
* /
公共接口IOracleExample {
公共双timestwo(双x)抛出IOExceptionMATLABException;
}
/ * *
*主要方法允许测试服务器从一个独立的Java应用程序。
* @param arg游戏
* /
公共静态void main (String [] args) {
System.out.println (doTimesTwo (3.14));
}
/ * *
*方法实际上调用议员服务器。
* @param x输入要乘以2。
* @返回结果。
* /
公共静态双doTimesTwo(双x) {
MWClient客户= new MWHttpClient ();
试一试{
/ /创建一个代理对象
IOracleExample obj = client.createProxy (
URL (" http://localhost: 9910 / OracleExample”),
IOracleExample.class);
/ /调用timestwo函数在服务器上
返回obj.timestwo (x);
}(MalformedURLException e) {
e.printStackTrace ();
}(MATLABException e) {
e.printStackTrace ();
}(IOException e) {
e.printStackTrace ();
}
返回0;
}
}
复制| mps_client。jar |到相同的目录,因为这| MPSClient.java |。然后编译应用程序使用:
javac类路径mps_client。jar MPSClient.java
并运行它使用:
java类路径。mps_client。jar MPSClient
这将产生的输出:
6.28
Oracle服务器
我们可以用同样的Oracle服务器上的Java类。之前我们可以做,但我们需要确保| mps_client。jar |加载的服务器。这可以用| loadjava |命令行工具附带Oracle服务器:
loadjavamps_client。jar / myPassword@myDatabase用户系统
(你需要替换我的密码
myDatabase与你的实际密码和数据库名称)。
一旦加载自定义这个类可以加载到数据库:
loadjavaMPSClient。java-user system/myPassword@myDatabase
然后从SQL命令的类调用您需要定义一个所谓的调用规范。这是通过以下SQL命令:
创建或替换函数MPSFUNCTION数量(X)返回数量作为语言JAVA名称“MPSClient.doTimesTwo(双)返回双';
进一步的用户要执行这个函数需要权限访问外部主机。在这个例子中,我们假设系统
用户将在国会议员的功能和运行服务器localhost: 9910所以我们可以运行以下SQL命令给予必要的许可:
开始dbms_java。grant_permission(“系统”、“SYS: java.net.SocketPermission”,“localhost: 9910”,“连接,解决”);结束;
使用以下SQL命令我们可以创建两个新表MYTABLE1
MYTABLE2
都用一个列col1它包含数字数据:
创建表“系统”。“MYTABLE1" ("COL1" NUMBER);
创建表“系统”。“MYTABLE2" ("COL1" NUMBER);
现在我们可以创建一个触发器MYTABLE1
当数据被插入到它,我们所说的timestwo
函数的议员服务器和存储的结果MYTABLE2:
创建或替换插入后触发MPSTRIGGER MYTABLE1为每一行开始插入MYTABLE2 (col1)值(MPSFUNCTION (new.col1));结束;
如果一切工作正常,当我们现在将数据插入MYTABLE1:
插入成表MYTABLE1 (col1)值(21)
我们应该自动看到翻倍值出现在MYTABLE2:
SELECT * FROM MYTABLE2
应该显示的col1价值42 | | | | | MYTABLE2 |。
附件
在这个例子中使用的代码是下面的连接。这个附件还包含一个MATLAB-file RunExample。m使用数据库工具连接到Oracle数据库,可以自动执行所有上面给出的SQL查询如果MATLAB与Oracle服务器安装在同一台机器上的jar文件加载到服务器。注意,您需要更新该脚本使用正确的用户名、密码和数据库名称和主机名。也假定Oracle jdbc驱动程序已经被加载。

更多的答案(0)

类别

找到更多的在部署归档文件创建帮助中心文件交换

标签

没有标签了。

s manbetx 845


释放

R2014a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!