if exists (Select * From sysobjects where Name = 'A_Test') Drop Table A_Test
if exists (Select * From sysobjects where Name = 'SP_Test') Drop Procedure SP_Test
GO
Create Table A_Test
(F1 VarChar(20),
F2 VarChar(100),
LogDate DateTime)
GO
Create Procedure SP_Test As
BEGIN
Declare @ErrCode integer, @SQL NVarChar(512) Insert Into A_Test (F1, F2, LogDate) Select 1/0, 'F2', GetDate()
--上面一句会报错,我们任然需要执行下面的语句
Select @ErrCode = @@ERROR
Insert Into A_Test (F1, F2, LogDate) Select '执行到这里了', '第一步会报错 Error=' + Convert(VarChar(10), @ErrCode), GetDate()
--SELECT 'HN', *, GetDate() FROM OPENROWSET('SQLOLEDB','babybearzb.dyndns.biz,1533';'sa';'wobugaosuni', 'Select Top 1 * From IV_BizDB.dbo.Sys_Depart')
Select @SQL = 'SELECT ''HN'', *, GetDate() FROM OPENROWSET(''SQLOLEDB'',''babybearzb.dyndns.biz,1533'';''sa'';''wobugaosuni'', ''Select Top 1 * From IV_BizDB.dbo.Sys_Depart'')'
Exec sp_executesql @SQL
Select @ErrCode = @@ERROR
Insert Into A_Test (F1, F2, LogDate) Select '执行到这里了', '第二步会报错 Error=' + Convert(VarChar(10), @ErrCode), GetDate()
END/*
执行完毕 Exec SP_Test 后
Select * From A_Test中必须有2条记录
Exec SP_Test
Select * From A_Test
目前没有第二条记录,只有一条记录
*/向高手求助,为什么第二条错误记录没有插入到a_test中来?
if exists (Select * From sysobjects where Name = 'SP_Test') Drop Procedure SP_Test
GO
Create Table A_Test
(F1 VarChar(20),
F2 VarChar(100),
LogDate DateTime)
GO
Create Procedure SP_Test As
BEGIN
Declare @ErrCode integer, @SQL NVarChar(512) Insert Into A_Test (F1, F2, LogDate) Select 1/0, 'F2', GetDate()
--上面一句会报错,我们任然需要执行下面的语句
Select @ErrCode = @@ERROR
Insert Into A_Test (F1, F2, LogDate) Select '执行到这里了', '第一步会报错 Error=' + Convert(VarChar(10), @ErrCode), GetDate()
--SELECT 'HN', *, GetDate() FROM OPENROWSET('SQLOLEDB','babybearzb.dyndns.biz,1533';'sa';'wobugaosuni', 'Select Top 1 * From IV_BizDB.dbo.Sys_Depart')
Select @SQL = 'SELECT ''HN'', *, GetDate() FROM OPENROWSET(''SQLOLEDB'',''babybearzb.dyndns.biz,1533'';''sa'';''wobugaosuni'', ''Select Top 1 * From IV_BizDB.dbo.Sys_Depart'')'
Exec sp_executesql @SQL
Select @ErrCode = @@ERROR
Insert Into A_Test (F1, F2, LogDate) Select '执行到这里了', '第二步会报错 Error=' + Convert(VarChar(10), @ErrCode), GetDate()
END/*
执行完毕 Exec SP_Test 后
Select * From A_Test中必须有2条记录
Exec SP_Test
Select * From A_Test
目前没有第二条记录,只有一条记录
*/向高手求助,为什么第二条错误记录没有插入到a_test中来?
解决方案 »
- sql select追加一列
- 上一条 下一条如何实现
- 更新兩個資料庫中,相同的資料表中的一個欄位的值為相同
- 约束检查
- 在实际开发中,真的需要满足第三范式吗?我看到很多表都不满足.
- 视图触发器问题???
- 高手帮忙,立刻结贴! sp_addlinkedserver 的问题.
- 高手们,请问那个效率会更高?在数据量很大的时候。
- 初学者的问题,关于存储过程,进者有分!!
- 毕设,设计一个可视化的管理系统,要求有单机版、网络版两种,请问用什么开发比较合适?急求回答,谢谢~
- 求解:win7 (windows 7)下SQL Server管理器无法连接到远程SQL数据库
- 又遇到Mysql-front这样乱码的吗,帮帮小弟
消息 8134,级别 16,状态 1,过程 SP_Test,第 3 行
遇到以零作除数错误。
语句已终止。(1 行受影响)
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期"。
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。"。
消息 11004,级别 16,状态 1,第 0 行
TCP 提供程序: 请求的名称有效,但是找不到请求的类型的数据。
你可以只执行 第2句 看看
SELECT 'HN', *, GetDate() FROM OPENROWSET('SQLOLEDB','babybearzb.dyndns.biz,1533';'sa';'wobugaosuni', 'Select Top 1 * From IV_BizDB.dbo.Sys_Depart')
Select @@ERROR再执行第一句的
Insert Into A_Test (F1, F2, LogDate) Select 1/0, 'F2', GetDate()
Select @@ERROR
Select @@ERROR执行返回:
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期"。
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。"。
消息 11004,级别 16,状态 1,第 0 行
TCP 提供程序: 请求的名称有效,但是找不到请求的类型的数据。我的目的是如何把连接不成功的错误消息11004插入到a_test表中呢?
现在的情况是SQL2005直接报错就终止了.
select 1/0
select @Err=@@ERROR
insert into a_test (F1, F2, LogDate) select '111',Convert(VarChar(10), @Err), GetDate()
select * from a_test这个执行可以把错误信息插入到表中
但:
declare @Err integer
SELECT 'HN', *, GetDate() FROM OPENROWSET('SQLOLEDB','babybearzb.dyndns.biz,1533';'sa';'wobugaosuni', 'Select Top 1 * From IV_BizDB.dbo.Sys_Depart')
select @Err=@@ERROR
insert into a_test (F1, F2, LogDate) select '111',Convert(VarChar(10), @Err), GetDate()
执行这个弹出错误信息,就不执行插入操作了。请问高手该怎么解决啊?或者有别的什么好的办法么?
Select @SQL = 'SELECT ''HN'', *, GetDate() FROM OPENROWSET(''SQLOLEDB'',''babybearzb.dyndns.biz,1533'';''sa'';''wobugaosuni'', ''Select Top 1 * From IV_BizDB.dbo.Sys_Depart'')'
Exec sp_executesql @SQL
改为
select @sql='SELECT' +'"'+'HN'+'"' +…………
否则 @sql 不是可执行的sql语句