From: | paul_smith1(at)talk21(dot)com |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | SQL stored proc query (optimising) |
Date: | 2003-03-20 12:46:37 |
Message-ID: | 20030320124717.KHHI27722.wmpmta01-app.mail-store.com@wmpmtavirtual |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
I'm currently developing a database in which I have a list of drivers. I've written a stored procedure for MS SQL Server which looks up the drivers name and returns their ID if they are already in the table, otherwise it adds them and then returns their ID
-- Used to look up a driver name. If the name is not in the list it adds it to the lsit
CREATE PROCEDURE sp_findAndUpdateDrivers
(@strDrivername varchar(50))
WITH RECOMPILE AS
BEGIN TRAN
SELECT ID FROM tblDrivers WHERE txtDriversName = @strDrivername
IF NOT EXISTS(SELECT ID FROM tblDrivers WHERE txtDriversName = @strDrivername)
BEGIN
INSERT INTO tblDrivers (txtDriversName) VALUES (@strDrivername)
SELECT ID FROM tblDrivers WHERE txtDriversName = @strDrivername
END
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN @@ERROR
END
COMMIT TRAN
RETURN
GO
This works fine, but I have to access the table twice, one to get the ID and once to check if they are in the table. Is there a better way I can do this such that it will still return the ID but is more efficeient?
Thanks in advance
Paul
--------------------
talk21 your FREE portable and private address on the net at http://www.talk21.com
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Carvalho | 2003-03-20 12:55:05 | Re: Trigger issue, bug? on 7.2.1 |
Previous Message | A.Bhuvaneswaran | 2003-03-20 11:52:20 | Re: query 2 database |