Darren DICK
darrend at crhorizons.com.au
Mon Oct 24 22:26:51 CDT 2005
Hi David Brilliant I am sure this is what we will need I will first try using the view Thanks heaps Darren ------------------------- -----Original Message----- From: dba-sqlserver-bounces at databaseadvisors.com [mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of David Lewis Sent: Tuesday, 25 October 2005 3:23 AM To: dba-sqlserver at databaseadvisors.com Subject: Re: [dba-SQLServer] dba-SQLServer Digest, Vol 32, Issue 13 Darren: Hmmmm... I'm not sure I follow what you want, but here are a few thoughts: 1) functions are evaluated for each row in the query. 2) The methods for calling a function are covered in BOL 3) Would the following be an acceptable way of achieving your goal: SELECT a.* from Account a WHERE a.AccountStatusCode<>'M' AND a.Cancelled IS NOT NULL ? Not sure why using a function is preferable to this very basic approach? Or, to put it in a subquery, perhaps something like SELECT a.* from Account a WHERE a.[Primary Key] NOT IN (SELECT b.[Primary Key] FROM Account b WHERE b.AccountStatusCode<>'M' AND b.Cancelled IS NOT NULL) Or, to use a view... CREATE VIEW vw_CancelledAccounts AS SELECT a.[Primary Key] from Account a WHERE a.AccountStatusCode<>'M' AND a.Cancelled IS NOT NULL Then use it in the query as: SELECT a.* from Account a INNER JOIN vw_CancelledAccounts b ON a.[Primary Key]=b.[Primary Key] There are many other ways to get there, too. I don't see how using a function is the best choice... HTH. D. Lewis Message: 1 Date: Mon, 24 Oct 2005 16:03:48 +1000 From: "Darren DICK" <darrend at crhorizons.com.au> Subject: [dba-SQLServer] Calling function from a query To: <dba-sqlserver at databaseadvisors.com> Message-ID: <200510240600.j9O60JJ28520 at databaseadvisors.com> Content-Type: text/plain; charset="us-ascii" Hello all What I have is a function that will (in this case) determine those records from the Account table that are now 'cancelled' In this example the cancelled status is true if there is a cancelled date in the Account Table and the Account status code is M Those 2 things combined need to occur to determine a cancelled record So rather than copy and paste the contents of the function below into each and every occurrence of testing for 'cancelled' I want a function to determine those 2 criteria then select all records from the Account table that meet the criteria as determined in the function IE how do I call the function from the query and do it 'on the fly' Make sense? Lemme know Many thanks in advance Darren ___________________________________________________ SQL = select * from Account where Account_IsCancelled(a) FUNCTION = fn Account_IsCancelled(a as Account) begin return (a.AccountStatusCode <> 'M' and a.DateCancelled is not null) end Darren _______________________________________________ dba-SQLServer mailing list dba-SQLServer at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-sqlserver http://www.databaseadvisors.com