我在php中调用COM类中的任何方法都遇到了麻烦.为了找到该类中的所有方法,我使用了:
$com = new COM('Some.Class.Name');
com_print_typeinfo($com);
Run Code Online (Sandbox Code Playgroud)
这个类包含了100种不同的方法.但是当他们打电话时:
$com->SomeMethod();
Run Code Online (Sandbox Code Playgroud)
,弹出这个错误:
致命错误:在第22行的C:\ xampp\htdocs\www\test.php中调用未定义的方法com :: SomeMethod()
当我使用其他COM对象(如" InternetExplorer.Application "类)时,不会发生这种情况.另外,我知道这个COM对象与Delphi等其他编程语言一样可以正常工作.
我在64位Windows Vista上使用PHP 5.5.19,在32位PHP架构上使用XAMPP.
对于这种情况可能发生的事情或一些可能的解决方法,我将不胜感激.
编辑: COM服务器应用程序是用Delphi编写的.
这可能是另一个线索:当我使用代码时
$com = new COM('Some.Class.Name');
foreach ($com as $obj) {
echo $obj->Name . "<br />";
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
致命错误:未捕获的异常'异常',消息'类型为com的对象未创建迭代器'
我想这表明应用程序界面本身可能存在问题,但我不知道该问题可能是什么.我在PHP中工作,所以COM对象的内部对我来说是完全模糊的.但我非常感谢有关具体步骤的任何线索,以解决这种情况.
EDIT2: 这是Srv_TLB.pas文件的简短代码.
unit Srv_TLB;
{$TYPEDADDRESS OFF}
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface
uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants;
const
// TypeLibrary Major and minor versions
SrvMajorVersion = 1;
SrvMinorVersion = 0;
LIBID_Srv: …Run Code Online (Sandbox Code Playgroud) 我需要创建一个以字符串作为参数的Oracle DB函数.该字符串包含字母和数字.我需要从这个字符串中提取所有数字.例如,如果我有一个像RO1234这样的字符串,我需要能够使用一个函数,比如说extract_number('RO1234'),结果将是1234.
更准确地说,这是将使用此函数的SQL查询.
SELECT DISTINCT column_name, extract_number(column_name)
FROM table_name
WHERE extract_number(column_name) = 1234;
Run Code Online (Sandbox Code Playgroud)
问题:如何使用Oracle SQL Developer或SQLTools客户端应用程序中的任何一个向我的Oracle数据库添加这样的函数,以便能够像上例中一样使用它?