November 30, 2005 at 12:41 pm
Is it possible to do the following using SELECT CASE:
EXEC ('If NOT exists(Select * from NotificationTemplate_ Where OrganizationID_ = 2)
Insert into NotificationTemplate_ (OrganizationID_, Subject_, Text_) Values(2, ''Subject'', ''Text'')
Else
Update NotificationTemplate_ Set Text_ = ''SomeText'', Subject_ = ''SomeSubject'' Where OrganizationID_ = 2')
Thanks in Advance
November 30, 2005 at 12:54 pm
because you are using two distinct actions 'update' and 'insert' you will need to have separated statements at least until SQL Server implement Oracle UPSERT or IBM Merge
by the way, why are you using dynamic sql for that ?
* Noel
November 30, 2005 at 1:29 pm
Hi Noeld
Thanks for the reply. I am using dynamic SQL because our developer asked me if this operation is possible from .net application by touching the db layer only once.
-Gary
November 30, 2005 at 1:30 pm
why not create a stored procedure then ?!?!?!
**ASCII stupid question, get a stupid ANSI !!!**
November 30, 2005 at 1:31 pm
Yeah, I wanted that but Architects want to implement their own persistence layer and they are against Stored procedures.
November 30, 2005 at 1:44 pm
And they call themselves "Architects" ... Would they preffer dynamic SQL ?
You can still send the batch in one roundtrip but SP is the key
* Noel
November 30, 2005 at 1:53 pm
CREATE PROCEDUERE dbo.<Name>
@Text nvarchar(1000), @Subject nvarchar(50), @OrgId int
Update NotificationTemplate
Set Text = @Text,
Subject = @Subject
Where OrganizationID = @OrgId
Insert into dbo.NotificationTemplate (OrganizationID, Subject, Text)
SELECT @OrgId, @Subject, @Text
WHERE NOT EXISTS (select 1 from dbo.NotificationTemplate where OrganizationID = @OrgId)
GO
EXECUTE dbo.<Name> "SomeText", "Object", 2
--------------
And fire your "Architects" immediately. At least don't let them design SQL scripts.
And hire one good SQL developer. Who read at least one book about relational databases.
_____________
Code for TallyGenerator
November 30, 2005 at 2:00 pm
Hey Noel - Gagandeep didn't say they call themselves "good" architects...
Dim sSQL As String sSQL = 'IF NOT EXISTS(SELECT * from NotificationTemplate WHERE OrganizationID = 2) INSERT INTO NotificationTemplate(OrganizationID, Subject, Text) Values(2, 'Subject', 'Text') ELSE UPDATE NotificationTemplate Set Text = 'SomeText', Subject = 'SomeSubject' WHERE OrganizationID = 2'
I'm a little curious - why does your table name and all field names end with an underscore - is it a typo (cut & paste)
or is that a specific naming convention..
**ASCII stupid question, get a stupid ANSI !!!**
November 30, 2005 at 2:09 pm
hehe good! point sushila but I usually assume that to be a software architect you should be good. Apparently I am wrong
I would use something like what sergyi posted and add a @@rowcount check between the Update and the insert to optimize the proc.
* Noel
November 30, 2005 at 2:11 pm
Hey Guys
I agree from the database performance and scalability point of view that stored procedures are the way to go, but I have no say in that. Table names and column names with (_) is also one of their inventions in which I have no say. Anyway, Thanks for all your replies.
Gary
November 30, 2005 at 2:14 pm
Have you not been listening ?!?! The "Architects" are "against Stored procedures"....
**ASCII stupid question, get a stupid ANSI !!!**
November 30, 2005 at 2:19 pm
Gary,
Two stored procedures for your consideration:
exec sp_update_resume
exec sp_distribute_resume
Does not looks good after what you just said ( you should take care of your self )
Cheers,
* Noel
November 30, 2005 at 2:22 pm
Good heavens! I know this sounds facetious but I'm in dead earnest when I say that people like these should be behind bars - at least they shouldn't be anywhere near databases..
**ASCII stupid question, get a stupid ANSI !!!**
December 1, 2005 at 5:46 am
The only 'good' thing about people as clueless as this, is that they do provide for a neverending source of work-opportunities for those not-so-clueless...
/Kenneth
December 1, 2005 at 9:56 am
Excellent point Kenneth
* Noel
Viewing 15 posts - 1 through 15 (of 16 total)
You must be logged in to reply to this topic. Login to reply