将 C++ 方法 return 传递给 Pro*C 过程
Pass a C++ method return to a Pro*C procedure
我知道在 Pro*C 中可以将主机变量或字符串文字传递给过程:
dbms_pipe.purge(:pipe_name);
dbms_pipe.purge('pipe_name');
是否可以将方法 return 传递给 Pro*C 程序?以下调用不起作用:
dbms_pipe.purge(pipe_name.c_str());
迟到的回答,但仍然:
首先,Pro*C 非常笨。当从 C 切换到 C++ 模式时,它变得更加愚蠢。
您的第二个示例根本没有挑战 Pro*C,因为字符串常量只是您的 sql 语句的一部分。
你的第一个例子就是它能做什么。您不能访问结构的成员(但您可以读取整个结构)、调用函数或其他任何内容。处理这个问题的唯一方法是首先将函数调用的结果复制到一个主机变量中,然后将其传递给 Pro*C。要查找手册,请尝试 google 搜索 "oracle pro*c developer guide"。如果你仔细阅读它,你就会明白你能做什么,不能做什么...
我知道在 Pro*C 中可以将主机变量或字符串文字传递给过程:
dbms_pipe.purge(:pipe_name);
dbms_pipe.purge('pipe_name');
是否可以将方法 return 传递给 Pro*C 程序?以下调用不起作用:
dbms_pipe.purge(pipe_name.c_str());
迟到的回答,但仍然: 首先,Pro*C 非常笨。当从 C 切换到 C++ 模式时,它变得更加愚蠢。
您的第二个示例根本没有挑战 Pro*C,因为字符串常量只是您的 sql 语句的一部分。 你的第一个例子就是它能做什么。您不能访问结构的成员(但您可以读取整个结构)、调用函数或其他任何内容。处理这个问题的唯一方法是首先将函数调用的结果复制到一个主机变量中,然后将其传递给 Pro*C。要查找手册,请尝试 google 搜索 "oracle pro*c developer guide"。如果你仔细阅读它,你就会明白你能做什么,不能做什么...