我想在我的try块中出现的sql server中重新抛出相同的异常.我可以抛出相同的消息,但我想抛出相同的错误.
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO Tags.tblDomain
(DomainName, SubDomainId, DomainCode, Description)
VALUES(@DomainName, @SubDomainId, @DomainCode, @Description)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
declare @severity int;
declare @state int;
select @severity=error_severity(), @state=error_state();
RAISERROR(@@Error,@ErrorSeverity,@state);
ROLLBACK TRANSACTION
END CATCH
Run Code Online (Sandbox Code Playgroud)
RAISERROR(@@Error, @ErrorSeverity, @state);
这一行会显示错误,但我希望功能类似.这会引发错误,错误编号为50000,但我想要抛出错误的数字,我正在通过@@error,
我想在前端捕获此错误
即
catch (SqlException ex)
{
if ex.number==2627
MessageBox.show("Duplicate value cannot be inserted");
}
Run Code Online (Sandbox Code Playgroud)
我想要这个功能.使用raiseerror无法实现.我不想在后端给出自定义错误消息.
当我通过ErrorNo抛出catch时,RAISEERROR应该返回下面提到的错误
Run Code Online (Sandbox Code Playgroud)Msg 2627, Level 14, State 1, Procedure spOTest_DomainInsert,第14行违反UNIQUE KEY约束'UK_DomainCode'.无法在对象'Tags.tblDomain'中插入重复键.该语句已终止.
编辑:
如果我希望在前端处理异常,考虑到存储过程包含需要执行的多个查询,那么不使用try catch块的缺点是什么?
我有一个表管理员,只有一列,adminId是主键.由于业务规则,它必须是这样的.
我想一劳永逸地理解如何编写在这样的表中插入值的存储过程.我正在使用SQL Server和T-SQL并尝试使用SCOPE_IDENTITY(),但这不起作用,因为该表具有INSERT_IDENTITY为false或off.
我真的不想插入一个虚拟值只是为了能够插入一个新行.谢谢!
似乎至少有两种方法可以使用直接T-SQL添加默认约束.我是否正确,下面两者之间的唯一区别是第二种方法专门为约束创建一个名称,第一种方法有一个由SQL Server生成?
ALTER TABLE [Common].[PropertySetting] ADD DEFAULT ((1)) FOR [Active];
ALTER TABLE [Common].[PropertySetting] ADD CONSTRAINT [DF_PropertySetting_Active) DEFAULT ((1)) FOR [Active];
Run Code Online (Sandbox Code Playgroud) 如何在一定范围内查询DateTime数据库字段?
我正在使用SQL SERVER 2005
错误代码如下
SELECT *
FROM TABLENAME
WHERE DateTime >= 12/04/2011 12:00:00 AM
AND DateTime <= 25/05/2011 3:53:04 AM
Run Code Online (Sandbox Code Playgroud)
请注意,我需要在特定时间范围内获取行.例如,10分钟的时间范围.
目前SQL返回"12"附近的语法不正确."
以下SQL:
SELECT notes + 'SomeText'
FROM NotesTable a
Run Code Online (Sandbox Code Playgroud)
给出错误:
数据类型nvarchar和text在add运算符中不兼容.
什么相当于SQL Server中的Oracle RowID?
我一直只使用MySQL,没有其他数据库系统.
在今天的公司会议上提出了一个问题,我很尴尬,我不知道:对于开发人员来说,MS或Oracle提供的功能是什么,MySQL缺少哪些功能,哪些允许MS和Oracle为他们的系统收费?
我有2个日期(日期时间):
date1 = 2010-12-31 15:13:48.593
date2 = 2010-12-31 00:00:00.000
它在同一天,只是不同的时间.比较date1和date2使用<=因为date1时间而无效.所以date1 <= date2是错误的,但应该是真的.我可以通过查看年,月和日来比较它们,以便它们是相同的吗?它的SQL Server 2008.
谢谢 :)
可以在SQL Server CREATE TABLE语句中创建主键或唯一索引.是否可以在CREATE TABLE语句中创建非唯一索引?
CREATE TABLE MyTable(
a int NOT NULL
,b smallint NOT NULL
,c smallint NOT NULL
,d smallint NOT NULL
,e smallint NOT NULL
-- This creates a primary key
,CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (a)
-- This creates a unique nonclustered index on columns b and c
,CONSTRAINT IX_MyTable1 UNIQUE (b, c)
-- Is it possible to create a non-unique index on columns d and e here?
-- Note: these variations would not …Run Code Online (Sandbox Code Playgroud) 如何使用T-SQL脚本获取当前连接的SQL Server服务器和实例名称?