如何解决如何在RAISERROR方法中打印DateTime变量?
| 我的存储过程接受两个参数 @EffectiveStartDate DATETIME @EffectiveEndDate DATETIME 我将验证代码编写为:IF(@EffectiveStartDate > @EffectiveEndDate)
BEGIN
RAISERROR (\'SPName: InsertUpdateLiquidityDateRule: Start Date: %s cannot be greater than End Date %s\',11,1,CAST(@EffectiveStartDate AS varchar(30)),CAST(@EffectiveEndDate AS varchar(30)));
RETURN -1
END
我可以知道我在做什么错。
在编译我的SProc时,它引发了消息“ CAST()附近的语法不正确”
解决方法
提供的值必须是常数或变量。您不能将函数名称指定为参数值。 (来自MSDN执行存储过程)。
您需要执行以下操作:
declare @EffectiveStartDateText varchar(30)
set @EffectiveStartDateText = cast(@EffectiveStartDate as varchar)
declare @EffectiveEndDateText varchar(30)
set @EffectiveEndDateText = cast(@EffectiveEndDate as varchar)
RAISERROR (
\'SPName: InsertUpdateLiquidityDateRule: Start Date: %s cannot be greater than End Date %s\',11,1,@EffectiveStartDateText,@EffectiveEndDateText);
, 只是尝试提供帮助,这是另一个示例。
我将其放在BEGIN TRY之后的BEGIN CATCH语句中。
注意:这与使用if语句非常相似。
BEGIN TRY
--Do something.
END TRY
BEGIN CATCH
--Else on error do this.
PRINT \'Problem found!!! \'
-- Whoops,there was an error
-- Raise an error with the details of the exception
DECLARE @ErrMsg nvarchar(4000),@ErrSeverity int,@ErrLineNum int
SELECT @ErrMsg = ERROR_MESSAGE(),@ErrSeverity = ERROR_SEVERITY(),@ErrLineNum = ERROR_LINE()
RAISERROR(@ErrMsg,@ErrSeverity,@ErrLineNum)
END CATCH
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。