Djabarov, Robert
Robert.Djabarov at usaa.com
Wed Feb 26 13:57:06 CST 2003
Francisco, It's still failing on compile, besides you don't really need a FROM clause because you're not joining anything. NOLOCK is used to resolve concurrency issues in multi-user environment. ______________________________________________________ Robert Djabarov Certified MS SQL Server DBA Certified MS SQL Server Programmer Certified MS VB Programmer ? (210) 913-3148 - phone ( (210) 753-3148 - pager -----Original Message----- From: Francisco H Tapia [mailto:my.lists at verizon.net] Sent: Wednesday, February 26, 2003 12:18 PM To: dba-sqlserver at databaseadvisors.com Subject: Re: [dba-SQLServer]More SQL Server 7 Stored Procedure help if possible Right-o it here is here it is again w/o syntax errors..the previous one was OTOMH CREATE PROCEDURE stp_UpdateAvailability (@PayrollNo as Int) AS UPDATE tblAvailabilityAll SET AvailabilityCode = CASE AvailabilityCode WHEN A THEN 1 WHEN N THEN 2 WHEN S THEN 3 WHEN H THEN 4 ELSE AvailabilityCode --othewise just leave as is. END FROM tblAvailabilityAll Where PayrollNo = @PayrollNo AND IsNumeric(AvailabilityCode) = 0 BTW, I like the use of Inner joins to weed out the Numeric based Availability codes. I think all in all your version runs faster as Joins are much quicker than breaking down through a case statement. Also, I've never seen a use of the nolock hint, what kind of performance boost do you get when using it? average? -Francisco http://rcm.netfirms.com ----- Original Message ----- From: "Djabarov, Robert" <Robert.Djabarov at usaa.com> To: <dba-sqlserver at databaseadvisors.com> Sent: Wednesday, February 26, 2003 9:51 AM Subject: RE: [dba-SQLServer]More SQL Server 7 Stored Procedure help if possible : Nice...But if Paul creates a table that contains Availability codes, then it will be much cleaner: : : create table tblAvailabilityCodes ( : CodeID int identity(1,1) not null primary key nonclustered, : CodeValueChar char(1) not null, : CodeValueNum char(1) not null, : Description varchar(255) null) : go : create table tblAvailabilityAll ( : PayrollNo int not null, : AvailabilityCode char(1) not null) : go : create clustered index idxCodeValue on tblAvailabilityCodes (CodeValueChar) : go : insert tblAvailabilityCodes (CodeValueChar, CodeValueNum) values ('A', '1') : insert tblAvailabilityCodes (CodeValueChar, CodeValueNum) values ('N', '2') : insert tblAvailabilityCodes (CodeValueChar, CodeValueNum) values ('S', '3') : insert tblAvailabilityCodes (CodeValueChar, CodeValueNum) values ('H', '4') : go : create proc spU_tblAvailabilityAll ( : @PayrollNo int ) -- Same assumption that PayrollNo is integer field : as : declare @RetVal int, @error int : begin tran : update a set AvailabilityCode = c.CodeValueNum : from tblAvailabilityAll a (nolock) : inner join tblAvailabilityCodes c (nolock) : on a.AvailabilityCode = c.CodeValueChar : where a.PayrollNo = @PayrollNo : select @RetVal=@@rowcount, @error=@@error : if @error != 0 begin : raiserror ('Failed to update!', 15, 1) : rollback tran : return (1) : end : commit tran : select RowsAffected = @RetVal : return (0) : go : : Besides, Francisco's version will not compile...sorry :) : : ______________________________________________________ : Robert Djabarov : Certified MS SQL Server DBA : Certified MS SQL Server Programmer : Certified MS VB Programmer : ? (210) 913-3148 - phone : ( (210) 753-3148 - pager : : -----Original Message----- : From: Francisco H Tapia [mailto:my.lists at verizon.net] : Sent: Wednesday, February 26, 2003 11:18 AM : To: dba-sqlserver at databaseadvisors.com : Subject: Re: [dba-SQLServer]More SQL Server 7 Stored Procedure help if possible : : : Anyone have any idea how to do this within one Stored Procedure (or is it : possible in a single Stored Procedure.....??? : Yes ;o) : : : I would be grateful fr any sample code etc... : awright, but only cuz you'd be grateful ;o), [Wednesday... and I need my SOF : (soldier of fortune II) kick.] : I'm going to ASSuME that the payroll is the identity key for this table, or : the identifying key for this table... : : CREATE PROCEDURE stp_UpdateAvailability (@PayrollNo as Int) AS : UPDATE tblAvailabilityAll : SET Availability Code = CASE AvailabilityCode : WHEN A THEN 1 : WHEN N THEN 2 : WHEN S THEN 3 : WHEN H THEN 4 : ELSE AvailabilityCode --othewise : just leave as is. : FROM tblAvailabilityAll : Where PayrollNo = @PayrollNo AND IsNumeric(AvailabilityCode) = 0 : : You mentioned that you are a novice.... and perhaps you know this.. but I'll : say it anyway... : **NEVER RUN TEST PROCEDURES ON A PRODUCTION SERVER!!!, ALWAYS USE A TEST : SERVER** : the license for a developer copy of Sql is about $500 so you can install SQL : Server on your desktop, this will help you out a lot in that you can : practice your backup/restore procedures and double-check your backups. : -Francisco : http://rcm.netfirms.com : ----- Original Message ----- : From: <paul.hartland at fsmail.net> : To: <dba-SQLServer at databaseadvisors.com>; <accessd at databaseadvisors.com>; : <dba-vb at databaseadvisors.com> : Sent: Wednesday, February 26, 2003 8:47 AM : Subject: [dba-SQLServer]More SQL Server 7 Stored Procedure help if possible : : : : To all, : : : : If you read my first email regarding Stored Procedure's you will know that : I am quite a novice at the moment. I have a table called tblAvailabilityAll : which contains fields PayrollNo and an AvailabilityCode. The Availability : codes are A,N,S,H and when an employee leaves, in the first instance we need : to update A,N,S,H to 1,2,3,4 accordingly. : : : : Anyone have any idea how to do this within one Stored Procedure (or is it : possible in a single Stored Procedure.....??? : : : : I would be grateful fr any sample code etc... : : : : Thanks in advance : : : : Paul Hartland : : : _______________________________________________ : dba-SQLServer mailing list : dba-SQLServer at databaseadvisors.com : http://databaseadvisors.com/mailman/listinfo/dba-sqlserver : http://www.databaseadvisors.com : : : : _______________________________________________ : dba-SQLServer mailing list : dba-SQLServer at databaseadvisors.com : http://databaseadvisors.com/mailman/listinfo/dba-sqlserver : http://www.databaseadvisors.com : _______________________________________________ dba-SQLServer mailing list dba-SQLServer at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-sqlserver http://www.databaseadvisors.com