我們正在開始從SQL Server 2000升級到SQL Server 2008,然後是SQL Server 2012(我們不能直接從2000到2012)。SELECT在存儲過程中使用時返回不同的結果
一個SQL Server 2000中的存儲過程的@ErrorMsg
值設置爲從sys.objects
圖,其中name
是一個給定值的名稱列。爲了達到這些目的,我們假設我正在尋找sys.objects
視圖中存在的名稱zz_BICWS_PersonInfo_Search_1000000000000000000
。
程序工作在SQL Server 2000中,如果我在SQL Server 2012中運行下面的代碼將返回正確的名稱,但在SQL Server中不確實在存儲過程中2012年
declare @ErrorMsg varchar(1000)
set @ErrorMsg = 'xxxxxxx'
select @ErrorMsg = name
from bic.dbo.sysobjects
Where name = 'zz_BICWS_PersonInfo_Search_10000000000000000000'
print 'test ' + @ErrorMsg
這些相同的線存在於存儲過程中,除了打印行@ErrorMsg
被輸出到調用該過程的應用程序。但它會使用應用程序中的消息框返回初始值xxxxxx
以顯示返回的值。
但是,如果我改變where子句
Where name Like ‘zz_BICWS_PersonInfo_Search_%’
(沒有符合這一點,約40行),那麼我會找到的第一個行的名稱。
那麼你是否已經在SQL 2012中完全實現了它,並且你沒有得到你期望的結果?基於句子'存儲過程中存在相同的行,除了打印行'只是讓我感到驚訝。 – 2012-08-07 20:09:38
您是否認爲在調用存儲過程時該對象不存在? – 2012-08-07 21:25:17