Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
tonykhela
Starting Member
2 Posts |
Posted - 2002-08-02 : 04:23:33
|
| Hi All,I have a database on SQL 2000 that was originally on a SQL 6.5 server. The database compatibility level was left at 65 (the person doing the upgrade didn't know any better!). I have since created a stored procedure that has been working fine, but it stops working when I change the compatibility level to 80. I need to use this level as I want to use a user defined function elsewhere that requires SQL 2000 syntax. The behaviour of the SP is entirely predictable, when the comp. level is 65 it returns data, when the comp. level is 80 it returns nothing - no data, no messages, no errors. The SP is very similar to others I have that are working fine on other 2000 databases. I have tried creating a new database and using DTS to copy all objects and data from the existing database to the new one, but it exhibits exactly the same behaviour. The SP is below. Can anyone see where I'm going wrong?Thanks in advance,TonyKif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_docs_prec_rept2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_docs_prec_rept2]GOSET QUOTED_IDENTIFIER OFFGO----------------------------------CREATE PROCEDURE sp_docs_prec_rept2----------------------------------@sdate char(10),@edate char(10),@searchstr varchar(200),@restrbg varchar(200),@restrsubj varchar(200)ASDECLARE @mainsql varchar(4000)DECLARE @selectsql varchar(1000)DECLARE @restrictsql varchar(2000)BEGINIF @restrbg = '' SELECT @restrbg = NULLIF @restrsubj = '' SELECT @restrsubj = NULLIF @searchstr = '' SELECT @searchstr = NULLSELECT @selectsql="SELECT adesc.act_desc, a.START_DATE, typ.FULL_NAME AS typ_name, au.FULL_NAME AS au_name, pr.DOCNUMBER, pr.DOCNAME, sub.SUBJ_DESC, subcat.SUBCAT_NAME FROM docsadm.activitylog a INNER JOIN docsadm.profile pr ON a.docnumber = pr.docnumber LEFT OUTER JOIN DOCSADM.PEOPLE au ON a.AUTHOR = au.SYSTEM_ID INNER JOIN docsadm.people typ ON a.typist = typ.system_id INNER JOIN docsadm.prec_subject sub ON pr.prec_subject = sub.system_id INNER JOIN dbo.rt_activitydesc adesc ON a.activity_type = adesc.act_code INNER JOIN docsadm.sub_category subcat ON pr.sub_category = subcat.system_id WHERE a.start_date >= CONVERT(datetime, '" + @sdate + "', 103) AND a.start_date <= CONVERT(datetime, '" + @edate + "', 103) "IF @restrbg IS NOT NULL SELECT @restrictsql=@restrictsql + " AND subcat.SUBCAT_NAME LIKE '" + @restrbg + "%' "IF @restrsubj IS NOT NULL SELECT @restrictsql=@restrictsql + " AND sub.SUBJ_DESC LIKE '" + @restrsubj + "%' "IF @searchstr IS NOT NULLBEGIN SELECT @restrictsql=@restrictsql + " AND (UPPER(typ.FULL_NAME) LIKE UPPER('%" + @searchstr + "%')" SELECT @restrictsql=@restrictsql + " OR UPPER(au.FULL_NAME) LIKE UPPER('%" + @searchstr + "%')" SELECT @restrictsql=@restrictsql + " OR UPPER(pr.DOCNUMBER) LIKE UPPER('%" + @searchstr + "%')" SELECT @restrictsql=@restrictsql + " OR UPPER(adesc.act_desc) LIKE UPPER('%" + @searchstr + "%')" SELECT @restrictsql=@restrictsql + " OR UPPER(pr.DOCNAME) LIKE UPPER('%" + @searchstr + "%'))"ENDSELECT @mainsql=@selectsql + @restrictsql + " ORDER BY subcat.subcat_name ASC, sub.subj_desc ASC, pr.docnumber ASC, a.start_date ASC"EXEC (@mainsql)PRINT @mainsqlENDGOGRANT EXECUTE ON sp_docs_prec_rept2 TO timM |
|
|
nr
SQLTeam MVY
12543 Posts |
Posted - 2002-08-02 : 07:21:40
|
| Have you the latest service pack - it sounds very similar to a v7 bug fixed in sp2 where a query could just not return data.They changed the locking in sp2 to fix a lot of multi-user problems and also slow things down.Other than that areas to look at are the left outer join, dates and null processing - of these null is probably the most likely.Why use double quotes?SELECT @selectsql='SELECT ...date >= CONVERT(datetime, ''' + @sdate + ''', 103)...==========================================Cursors are useful if you don't know sql.DTS can be used in a similar way.Beer is not cold and it isn't fizzy. |
 |
|
|
|
|
|
|
|