【发布时间】:2014-10-23 01:56:44
【问题描述】:
我有一个通用的字符串操作函数作为一个类开发如下;
Public Class MyClass
Public Function MyFunction(ByVal inString As String) As String
Dim MyString as String = inString & " Some Stuff"
Return MyString
End Function
End Class
真正的函数做真正的事情,但都是字符串操作,没有数据库、文件或屏幕访问。
有没有一种简单的方法可以使这个函数可以从 Oracle DB 中的包中的过程调用?
我已经在数据库服务器上安装了适用于 .NET 的 Oracle DB 扩展。
我希望避免在我开发 VB.NET 代码的计算机上安装任何东西。我之前使用 c 库(c++ DLL)创建了外部包,但我的印象是 .NET 是不同的。我在搜索时发现的所有内容似乎都在谈论某种形式的 VS 扩展,它允许直接从 .NET 进行“轻松”部署。
我最终需要将它部署在多个数据库上,并且需要一个我可以直接运行的手动过程,而不是从我的 .NET 开发计算机连接到每个数据库。
编辑:
我有一个从 PL/SQL 调用的现有 C++ 库。当我定义包体时,它看起来像;
create or replace PACKAGE BODY "MY_PACKAGE"
AS
FUNCTION MY_FUNCTION (VAR1 in varchar2, VAR2 in varchar2, VAR3 in varchar2)RETURN PLS_INTEGER
IS
EXTERNAL
LIBRARY DLL_MY_LIBRARY
NAME "MY_FUNCTION"
LANGUAGE C
PARAMETERS (VAR1 string, VAR2 string, VAR3 string);
END MY_PACKAGE;
类中的 VB.NET 函数的定义是什么样的?我需要点符号吗;
create or replace PACKAGE BODY "MY_PACKAGE"
AS
FUNCTION MY_CLASS.MY_FUNCTION (VAR1 in varchar2, VAR2 in varchar2, VAR3 in varchar2)RETURN PLS_INTEGER
IS
EXTERNAL
LIBRARY DLL_MY_LIBRARY
NAME "MY_CLASS.MY_FUNCTION"
LANGUAGE VB.NET
PARAMETERS (VAR1 string, VAR2 string, VAR3 string);
END MY_PACKAGE;
语言应该是什么?
【问题讨论】:
-
这是您要查找的内容:Developing and Deploying .NET Stored Procedures?我想这就是你想要避免的,对吧?
-
是的,实际上这就是我想要避免的。我想要的两条信息是,1)我是否需要对代码进行任何更改。 2)如何手动部署。
-
看看How to run batch file from within PL/SQL procedure。如果您可以启动批处理文件,我希望您可以运行任何东西。 (哦,安全问题!哦,人性……!)分享和享受。