Sziasztok!
Hogyan kell rábírni az ssms-t, hogy normálisan viselkedjen 16-nál nagyobb seretity értékű hibákkal?
ALTER
PROCEDURE pr2
@severity int
,@with_seterror bit
AS
if (@with_seterror = 1) begin
RAISERROR('***pr2 raiserror.', @severity, 1) WITH SETERROR
return @@error
end
else
begin
RAISERROR('***pr2 raiserror.', @severity, 1)
return @@error
end
ssms-ben:
Code Snippet
declare
@ret int, @err int;
exec
@ret = pr2 @severity = 17, @with_seterror = 0
select
@@error "@err", @ret "@ret", alma = ''
Ha ez lefut, akkor nem látom ez eredményhalmazt, ha viszont ugyenezt lefuttatom sqlcmd-vel, akkor ahogy azt elvárom, megjelenik:
>sqlcmd -S xxxxx\sqlexpress -i raiserror1.sql
Changed database context to 'teszt_db'.
Msg 50000, Level 17, State 1, Server DEVBOOK\SQLEXPRESS, Procedure pr2, Line 11
***pr2 raiserror.
@err @ret alma
----------- ----------- ----
0 50000
(1 rows affected)
TRY-CATCH-blokkban nem jön elő ez a hiba:
Code Snippet
begin
try
exec @ret = pr2 @severity = 17, @with_seterror = 0
select @@error "@err", @ret "@ret", hol = 'try'
end
try
begin catch
select @@error "@err", @ret "@ret", hol = 'catch'
end
catch
@err @ret hol
----------- ----------- -----
50000 NULL catch
(1 row(s) affected)