Risinājums ir tāds, ka var izmantot SQL Server iebūvēto metadatu funkciju @@PROCID. Izskatās visai glīti:
Create Proc dbo.TestProcIzpildes rezultāts:
As
Begin
Print OBJECT_NAME(@@PROCID)
Print OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)
End
[Papildināts] vēl neliela piebilde par kļūdu apstrādi. Catch blokā ir pieejama funkcija ERROR_PROCEDURE, kas arī atgriež procederūras nosaukumu. Atšķirība ir tā, ka atgriež nosaukumu tai procedūrai, kurā radās kļūda.
Lūk arī piemērs:
Create Proc dbo.ProcRadaKluduIzsaucot dbo.ProcErr, tiek izsaukta procedūra, kas rada kļūdu- dbo.ProcRadaKludu. Catch blokā tiek šī kļūda noķerta. Tur arī var redzēt atšķirības starp @@PROCID un Error_Procedure():
As
Begin
RAISERROR ('Mākslīga kļūda', 16, 11);
End
Go
Create Proc dbo.ProcErr
As
Begin
Begin Try
Exec dbo.ProcRadaKludu
End Try
Begin Catch
Print '@@ProcID: ' + OBJECT_NAME(@@PROCID)
Print 'Error_Procedure(): ' + Error_Procedure()
End Catch
End
Nav komentāru:
Ierakstīt komentāru