We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

Updating fields with StoredProcedures

fabyola
fabyola asked
on
Medium Priority
154 Views
Last Modified: 2010-04-05
I´m using Interbase 6.0. I have an application in which everytime a customer buys something I have to update two tables. One is the Item table that I have to subtract the number of items the customer bought. And the other one is the Clients table that I have to Sum the total of it´s purchase. I want to make a StoredProcedure to do it for me. Does anyone have any examples ? And if it´s better doing it with StoredProcedure or with Querys ?
Comment
Watch Question

Commented:
This stored procedure is just from head, it is not tested:

ALTER PROCEDURE PROC_ITEM_INSERT
(
  CUSTOMER_ID INTEGER,
  ITEM_ID INTEGER,
  AMOUNT DOUBLE PRECISION,
  PRICE DOUBLE PRECISION
)
RETURNS
(
  RESULT INTEGER
)
AS
  DECLARE VARIABLE A DOUBLE PRECISION;
  DECLARE VARIABLE D DOUBLE PRECISION;
  DECLARE VARIABLE I INTEGER;
BEGIN
  RESULT = - 9;

    IF (AMOUNT IS NULL) THEN
      AMOUNT = 0;
    IF (PRICE IS NULL) THEN
      PRICE = 0;

    SELECT AMOUNT FROM ITEMS WHERE (ITEM_ID=:ITEM_ID) INTO :A;
    IF (A IS NULL) THEN
      A = 0;
    A = :A - :AMOUNT;
    UPDATE ITEMS SET AMOUNT = :A WHERE (ITEM_ID=:ITEM_ID);

    D = AMOUNT * PRICE * 100;
    I = CAST(D AS INTEGER);
    D = CAST(I AS DOUBLE PRECISION);
    D = :D / 100;
    SELECT MONEY FROM CUSTOMERS WHERE (CUSTOMER_ID=:CUSTOMER_ID) INTO :A;
    IF (A IS NULL) THEN
      A = 0;
    A = :A + :D;
    UPDATE CUSTOMERS SET MONEY = :A WHERE (CUSTOMER_ID=:CUSTOMER_ID);

    RESULT = 0;
  END
  SUSPEND;
END

Author

Commented:
I want to pass the value of the pruchase or the amount of the item to the StoredProcedure and it will do the update for me. Is it better doing it with StoredProcedure the way I wan or with Querys ?

Commented:
In your case it is better to use a stored procedure, because you will send parameters for updating once, then stored procedure will update 2 tables. If you use Query it will need to be executed 2 times with different SQL.Text (or 2 Queries executed each 1 time).
Another reason could be if needed some changes:
 - If you use a stored procedure you must alter the database (sometimes it is difficult);
 - If you use query you must to recompile the application with new features.
I think it is difficult to make decision about that.

emil

Author

Commented:
What I want to do is have one StoredProcedure for each table. Do you think it will decrease traffic if I use the StoredProcedure to do the job ? Passing the value and the table name ?? Where am I going to get more ?

Commented:
Stored procedures provide:
                Modular design: stored procedures can be shared by applications that access the same database, eliminating duplicate code, and reducing the size of applications.
      Streamlined maintenance: when a procedure is updated, the changes are automatically reflected in all applications that use it without the need to recompile and relink them. They are compiled and optimized only once for each client.
      Improved performance: especially for remote client access. Stored procedures are executed by the server, not the client, which reduces network traffic.
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
So if it was you, what would you use if the application is Client/Server ?

Commented:
If it was me and the application is Client/Server, I would use Stored Procedures.

Author

Commented:
Especially when the client isn´t a good machine like a Pentium 100. Right ? Thank you for your help.

Commented:
Yea, especially when the client i a slow machine like a Pentium 100. You are welcome fabyola.
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.