[英]stored procedure sql server 2008
我正在一個項目上,正在使用存儲過程。 我收到此錯誤:
Line: 939
Error: Sys.WebForms.PageRequestManagerServerErrorException: Invalid object name 'IT_Assets'.
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
請在下面找到我的存儲過程代碼:
alter PROCEDURE [ITAssets_sp_IT_Assets]
-- Add the parameters for the stored procedure here
(@Mode varchar(12)='ADD',
@ID integer , @AssetCode nvarchar(20)=null, @Description nvarchar(70)=null,
@Site nvarchar(10)=null)
AS
Begin
IF @Mode='ADD'
Begin
Begin Tran
INSERT INTO [IT_Assets]
([ID]
,[AssetCode]
,[Description]
,[Site])
values
(@ID, @AssetCode, @Description, @Site
)
If @@ERROR <> 0
ROLLBACK TRAN
Else
COMMIT TRAN
Select @ID
End
ELSE
Begin
Begin Tran
UPDATE [IT_Assets]
SET
AssetCode = @AssetCode, Description = @Description, Site = @Site
WHERE ID = @ID
If @@ERROR <> 0
ROLLBACK TRAN
Else
COMMIT TRAN
Select @ID
End
End
我不理解錯誤,也不知道問題出在哪里? 有人可以幫我解決這個問題嗎?
從錯誤Invalid object name 'IT_Assets'
我認為表/視圖“ IT_Assets”與存儲過程存在於不同的數據庫中(假設該對象存在並且您使用的是正確的名稱)。
然后,您需要將Db名稱完全量化
UPDATE [DB_NAME].[dbo].[IT_Assets] (assuming `dbo` is the owner)
嘗試在程序頂部使用use
語句使用數據庫名稱,例如
use [DB_NAME]
GO
alter PROCEDURE [ITAssets_sp_IT_Assets]
-- Add the parameters for the stored procedure here
(@Mode varchar(12)='ADD',
...
還可以使用TRY .. CATCH
構造更改您的事務處理,如下所示
Begin Tran
BEGIN TRY
INSERT INTO [IT_Assets]
([ID]
,[AssetCode]
,[Description]
,[Site])
values
(@ID, @AssetCode, @Description, @Site);
COMMIT TRAN;
END TRY
BEGIN CATCH
ROLLBACK TRAN ;
END CATCH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.