在 C++ 中执行 "long-length" Oracle 命令
Executing a "long-length" Oracle command in C++
问题: 我有一个执行不同 Oracle 命令的 C++ 应用程序。我的应用程序可以通过以下方式执行此 SQL 语句(我省略了错误检查和一些较早的步骤):
strcpy(szProcName,"select grantee, granted_role from DBA_ROLE_PRIVS;");
rc=SQLPrepare(sqlc.g_hstmt,(SQLCHAR*)szProcName,(SQLINTEGER)strlen(szProcName));
rc = SQLExecute(sqlc.g_hstmt);
select 语句的数据 placed/binded 到 MFC 列表控件中。这没有问题...
当我尝试执行较长的 select 语句时出现问题。
我现在想用同样的方法,但是要 运行 这个 long SQL 语句:
SELECT a.GRANTEE, a.granted_role as "Connect", b.granted_role as "APPUSER" FROM
(SELECT GRANTEE, granted_role from DBA_ROLE_PRIVS where GRANTED_ROLE = 'CONNECT') a
FULL OUTER JOIN
(SELECT GRANTEE, granted_role from DBA_ROLE_PRIVS where GRANTED_ROLE = 'APPUSER') b
ON a.GRANTEE=b.GRANTEE;
将整个语句设置为 szProcName
似乎是错误的处理方式。
我尝试了什么: 我试图将所有 SQL 文本添加到 szProcName
中,但它不适合并且使代码非常混乱.我还想创建一个存储过程以在 C++ 中调用。存储过程要求我使用 INTO
子句并且不会生成我可以在 C++ 中使用的 table。有更好的方法吗?
编辑: 我找到了一种工作方式。通过增加 szProcName
的大小并使用 strcat()
,我可以添加每一行然后执行。我仍然想知道是否有更合适的方法,特别是如果我的语句变得更大(他们可能会)。
我找到了一种工作方式。通过增加 szProcName 的大小并使用 strcat(),我可以添加每一行然后执行。我仍然想知道是否有更合适的方法,特别是如果我的语句变得更大(他们有)。
问题: 我有一个执行不同 Oracle 命令的 C++ 应用程序。我的应用程序可以通过以下方式执行此 SQL 语句(我省略了错误检查和一些较早的步骤):
strcpy(szProcName,"select grantee, granted_role from DBA_ROLE_PRIVS;");
rc=SQLPrepare(sqlc.g_hstmt,(SQLCHAR*)szProcName,(SQLINTEGER)strlen(szProcName));
rc = SQLExecute(sqlc.g_hstmt);
select 语句的数据 placed/binded 到 MFC 列表控件中。这没有问题...
当我尝试执行较长的 select 语句时出现问题。 我现在想用同样的方法,但是要 运行 这个 long SQL 语句:
SELECT a.GRANTEE, a.granted_role as "Connect", b.granted_role as "APPUSER" FROM
(SELECT GRANTEE, granted_role from DBA_ROLE_PRIVS where GRANTED_ROLE = 'CONNECT') a
FULL OUTER JOIN
(SELECT GRANTEE, granted_role from DBA_ROLE_PRIVS where GRANTED_ROLE = 'APPUSER') b
ON a.GRANTEE=b.GRANTEE;
将整个语句设置为 szProcName
似乎是错误的处理方式。
我尝试了什么: 我试图将所有 SQL 文本添加到 szProcName
中,但它不适合并且使代码非常混乱.我还想创建一个存储过程以在 C++ 中调用。存储过程要求我使用 INTO
子句并且不会生成我可以在 C++ 中使用的 table。有更好的方法吗?
编辑: 我找到了一种工作方式。通过增加 szProcName
的大小并使用 strcat()
,我可以添加每一行然后执行。我仍然想知道是否有更合适的方法,特别是如果我的语句变得更大(他们可能会)。
我找到了一种工作方式。通过增加 szProcName 的大小并使用 strcat(),我可以添加每一行然后执行。我仍然想知道是否有更合适的方法,特别是如果我的语句变得更大(他们有)。