- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MSDN声明以下语法:
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
msg_str
期望字符串最多为 2047 个字符,但会截断更长的字符串。它还可以替换参数,这会比值提供的字符数进一步截断消息:
The error message can have a maximum of 2,047 characters. If the message contains 2,048 or more characters, only the first 2,044 are displayed and an ellipsis is added to indicate that the message has been truncated. Note that substitution parameters consume more characters than the output shows because of internal storage behavior. For example, the substitution parameter of %d with an assigned value of 2 actually produces one character in the message string but also internally takes up three additional characters of storage. This storage requirement decreases the number of available characters for message output. When msg_str is specified, RAISERROR raises an error message with an error number of 50000.
severity
需要一个介于 0 到 25 之间的数字,但会更正其他数字:
Severity levels from 0 through 18 can be specified by any user. Severity levels from 19 through 25 can only be specified by members of the sysadmin fixed server role or users with ALTER TRACE permissions. For severity levels from 19 through 25, the WITH LOG option is required. Severity levels less than 0 are interpreted as 0. Severity levels greater than 25 are interpreted as 25.
state
期望值介于 0 到 255 之间,但会更正低于零的值:
<小时/>[state] is an integer from 0 through 255. Negative values default to 1. Values larger than 255 should not be used.
运行这些查询时出现以下错误:
RAISEERROR('Test', 20, 1);
<小时/>Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Test'.
DECLARE @err_message nvarchar(255);
SET @err_message = 'Test';
RAISEERROR(@err_message, 20, 1);
<小时/>Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'RAISEERROR'.
我可以很好地执行各种其他查询。例如:
THROW 50001, 'Test', 1;
<小时/>Msg 50001, Level 16, State 1, Line 1
Test
SELECT @@VERSION
产生以下内容:
Microsoft SQL Server 2016 (RTM-GDR) (KB3194716) - 13.0.1722.0 (X64) Sep 26 2016 13:17:23 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows 8.1 Pro 6.3 (Build 9600: )
MSDN 语法是“SQL Server(从 2008 年开始)”,在撰写本文时,该文章已于 2016 年 10 月 19 日
更新,即几个月后我正在运行的 SQL Server 版本的版本。
这是怎么回事?
最佳答案
文档:
MSDN states the following syntax:
RAISERROR
您的命令:
RAISEERROR('Test', 20, 1);
我总是犯这个错误。该命令不是“Raise Error”,而是“Rais Error”。我不知道为什么,但我们坚持下去......
关于sql - TSQL Raiserror 语法不正确,遵循 MSD 指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785033/
当我阅读 MSDN 的示例时 raiserror : RAISERROR (N'This is message %s %d.', -- Message text. 10, --
以下T-Sql代码: DECLARE @usu VARCHAR(10); SET @usu = 'TOM'; PRINT @usu; RAISERROR ('Name of USU is %i ',1
无论如何要打破线并在RaiseError的下一行继续?和 /n不工作 下面是我的代码: BEGIN BEGIN TRY SELECT 16/0 END TRY BEGIN CATCH
我正在尝试在查询中使用RAISERROR,但无法正常运行。毫无疑问,我正在尝试完全以错误的方式执行此操作。 例如,在下面的代码中,如果DestType字段为空或NULL,我希望它终止查询。 SELEC
我有一个包含 try-catch block 的存储过程。在 catch block 中,我调用 raiserror() 以在某些上下文中重新抛出错误。 我原以为如果发生错误,将调用 raiserro
我有一个包含 try-catch block 的存储过程。在 catch block 中,我调用 raiserror() 以在某些上下文中重新抛出错误。 我原以为如果发生错误,将调用 raiserro
我正在开发一个数据库和一些JSP页面来对其执行CRUD操作。 我无法在 JSP 代码中捕获与 SQL 代码相关的异常。 例如: 我在这部分代码中在 T-SQL 中引发了错误: IF @existing
CREATE TRIGGER x AFTER INSERT ON itemtype FOR EACH ROW DECLARE minn itemtype.PRICE%type; BEGIN s
我刚刚创建了一个 Instead After Trigger,其语法如下: Create trigger tgrInsteadTrigger on copytableto Instead of Ins
我有一些 3-4 个存储过程——如果需要我可以修改它们——它们使用 RAISERROR 来通知我的应用程序数据库端的一些 fatal error 。其中一些存储过程使用 ExecuteNonQuery
我使用 RAISERROR 从存储过程中生成进度输出而不是使用 PRINT,以避免 PRINT 对输出进行缓冲。现在我发现 RAISERROR 将在 500 次打印后开始缓冲。有没有办法解决这种行为?
这是我使用 tsqlt 的第一天,所以你可能会看到一些含糊的陈述。 我正在尝试测试一个具有 Try Catch Block 的存储过程,但测试中的实际语句是插入和更新命令。 现在我想测试如果出现 Er
我之前问过一个关于如何执行 PRINT 的问题,以便在脚本的其余部分仍在运行时立即提供输出(请参阅: How to see progress of running SQL stored procedu
能否不在 T-SQL 的 case 语句中引发错误?我总是遇到 SQL case 语句的问题:/ begin try declare @i int --set @i = (se
这里正确的语法是什么? If (@timestamp < (Select PromoStartTimestamp From @promo)) RAISERROR('Code not valid
MySQL 中相当于 SQL Server 中的 RAISERROR 的是什么? CREATE procedure GetallFiles() as begin if not exists(selec
(SQL 2005) raiserror 是否有可能终止存储过程。 例如,在一个大型系统中,我们有一个不希望输入到特定列中的值。在更新触发器中,如果你写: 如果存在(选择 * 从插入的地方 testc
我正在尝试在 SQL Server 2008 中创建一个存储过程。我有编程经验,但我无法弄清楚...也许我只是看它太久了!第一个示例引发了错误,但第二个示例没有...任何想法... ALTER PRO
为什么 RAISERROR 不拼写为 RAISEERROR?第二个E在哪里?我可以理解它是否是一些古老的关键字长度限制,但我不认为它是九个字符的限制。 RAIS 或 RROR 是一个技术词吗?“rai
我正在开发一个大型 SQL Server 代码库,其中一些代码库至少从 SQL 7 甚至更早的版本就开始开发了。 在整个代码库中,引发错误的方法是使用以下语法,据我所知,该语法未记录 RAISERRO
我是一名优秀的程序员,十分优秀!