• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 341
  • Last Modified:

Call a stored procedure without using CRecordset...

Hello, everyone.

Could anyone show me how to call a stored procedure which returns a value in VC++? (WITHOUT using CRecordeset)

I searched and got a few answers here but those were not what I wanted. Let me explain what I need for my project.
It's a multi-threaded program, and each thread must call the stored procedure continually while running. The stored procedure is like the bottom:

CREATE PROCEDURE GetMyNum
@In_MyStr varchar(15),
@Out_Result smallint OUTPUT
AS

SET @In_MyStr = RTRIM(LTRIM(@In_MyStr))
SET @Out_Result = 0

SELECT @Out_Result = theNum
FROM NumTable
WHERE theStr = @In_MyStr


I am from VB so it's very easy to do this with a Command object without using any recordset object. When I looked at a sample VC++ code somewhere and I was just lost.

There are several ways to accomplish the logic above. The reason why I chose this scenario is that I thought it might be better for performance (speed mostly).
Let me elaborate my logic a little bit.
My thought is that:

- Create a global connection object when the program starts.

- Create threads and they are going to use the connection object for its Command object's ActiveConnection.

- When I need a number from database, I call the stored procedure through the command object and get the value from the command object without even bothering with a CRecordset object.
 

Thank you in advance for any input.
Happy programming.
0
alexzen
Asked:
alexzen
  • 3
  • 2
1 Solution
 
TriskelionCommented:
Without using a CRecordset, you would need to use PRO*C.
If you want to use a CRecordset, there are a few techniques.
0
 
alexzenAuthor Commented:
Thank you for your comment, Triskelion.

Could you elaborate what is PRO*C??

Thanks
0
 
TriskelionCommented:
ORACLE ONLY.

PRO*C is an ORACLE modification to the C language.
It allows the developer to create blocks of SQL code inside of a C module.  The code is run through a pre-compiler that converts the SQL commands into C and the ORACLE OCI (Oracle Call Interface) commands.

Some people would rather use Pro*C than ODBC for code to be used only with Oracle.

http://www.altavista.com/sites/search/res_text?sc=on&hl=on&avkw=tgz&q=%22pro+c%22+AND+%22oracle+stored+procedures%22&kl=XX
0
 
alexzenAuthor Commented:
Thanks, Triskelion.

Alas, we are a Microsoft Shop.. so I'm using MS SQL server.

Thank you anyway.
0
 
TriskelionCommented:
You can call CDatabase::ExecuteSQL(), but AFAIK, it's only good for stored procedures that do not have result sets.
0

Featured Post

Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now