Solved

Executing non data returning stored procedures from Delphi ADO component

Posted on 2006-10-20
8
231 Views
Last Modified: 2010-05-18
Hello !

I am having some trouble executing a procedure using the Delphi ADO StoredProc component.
The component is calling a stored procedure on a MS SQL 2000 server but this procedure does not return any data.
It is only composed of a while loop and is used to update some data in other tables.

The procedure looks like this :

-----------------------------
while (select hardship_diffed_score_id from hardship_diffed_scores where hardship_diffed_score_id = @j) < @i+1
begin

      set @frgn_id = (select frgn_id from hardship_diffed_scores where hardship_diffed_score_id = @j)
            
      update hardship_diffed_scores
      set
      standard_score_id = (select hardship_standard_score_id from hardship_standard_scores
      where frgn_id = @frgn_id and hardship_date_id = @newdate),
      
      hist_diff_id = (select hardship_diff_id from hardship_diffs where hardship_date = @newdate
      and frgn_id = @frgn_id and account_id = @account_id and diff_type_id = 1),
      
      cs_diff_id = (select hardship_diff_id from hardship_diffs where hardship_date = @newdate
      and frgn_id = @frgn_id and account_id = @account_id and diff_type_id = 2)


      where hardship_diffed_score_id = @j
      set @j = @j +1

end

------------------------------------

The problem is that this procedure executes prefectly when run from the SQL server but does not run when called from the ADO component.
I use the execproc procedure ( datamodule1.update_diff_reference.ExecProc;) in delphi to "execute" but with no success so far.

It seems I am missing something here ... any idea what is wrong?

Thanks already for your help,

Laurent

0
Comment
Question by:TheForestMan
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 28

Expert Comment

by:2266180
ID: 17772591
you should add the eoExecuteNoRecords   to the executeOptions property of teh ado stored proc component.
0
 

Author Comment

by:TheForestMan
ID: 17772995
Hello!

Thanks for your answer, but I already tried it with no result.


Here are the setting I have for the object:

active = false
autocalcfields = true
cachesize = 1
commandtimeout = 30
cursorlocation = cuseclient
cursortype ctkeyset
enablebcd = true
executeoption = [eoExecuteNorecords]
filtered = false
locktype = ltOptimistic
MarsdallOptions moMarshalAll
maxrecords = 0
prepared = false
tag = 0

Hope this helps clarufying

thanks again for your help,

Laurent
0
 
LVL 14

Expert Comment

by:Pierre Cornelius
ID: 17773430
Try using

  datamodule1.update_diff_reference.Open;

instead of

  datamodule1.update_diff_reference.ExecProc;
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:TheForestMan
ID: 17773707
Hello PierreC!

I tried that as well, it tells me "arguments are of the wrong type , are out of acceptable range or are in conflict with one  another".
However, I checked all the types, ranges and nothing seems to be faulty.

And the procedure works great when run from MS Query Analyser with the same parameters...  :0(

Thanks anyway,

L
0
 
LVL 28

Expert Comment

by:2266180
ID: 17773735
can we see tha parameter list and type you are using? eitehr copy it from the dfm if you created them in design mode, or the code that creates them
0
 

Author Comment

by:TheForestMan
ID: 17773928
Hello !

I found the bug... I was actually looking in the wrong place.

Sorry for wasting your time and thanks again for your help.

the execproc does work. however, one of the parameter was feeding a reference to an id that did not exist. Somehow, the integer variable feeding this parameter was substracted by 1 (old code i needed to clean up) which would point to a non existent id in the database.
the procedure was therefore executing but got no effect since the id was incorrect.

That will teach me to clean up my code more often I guess.

thanks again !

Laurent
0
 
LVL 1

Accepted Solution

by:
Computer101 earned 0 total points
ID: 17983763
PAQed with points refunded (500)

Computer101
EE Admin
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
There's a multitude of different network monitoring solutions out there, and you're probably wondering what makes NetCrunch so special. It's completely agentless, but does let you create an agent, if you desire. It offers powerful scalability …
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…
Suggested Courses
Course of the Month6 days, 1 hour left to enroll

627 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question