Error Handling + Cursor
Oct 25, 2007
Hello group
I need some help and gaining knowledge per the SQL Standards.
I have a Stor Procedue which Cursor through say MASTER. This table have information/ Counm that guides me to multiple say two different table.
i.e, Col1 in MASTER table have the information on what table I need to work on COL2 in MASTER Table give me what Field I have to work on and accordingly move the data
Example :
MASTER
ID COL1 COL2 COL3
1 Address Street Nichols Rd.
1 Address Zip 90001
2 Address Street Michigan Ave
2 Address Zip 90002
3 Person FName James
3 Person LName Bond
4 Person FName Bill
4 Person LName Gates
Address
ID Street Zip
1 Nichols Rd. 90001
2 Michigan Ave 90002
Person
ID FName LName
3 James Bond
4 Bill Gates
For doing this I created a Store Procedure which Cursor thru MASTER table which for each row goes to Entity on which it has to work (MASTER Table : Col1 Value) and in that entity Its goes to the Field(MASTER Table: Col2 Value) and places the value of the Col3 in it.
It is working fine and superb. Now, I try to introduce Error Handling such that incase in order to see if there is any error while doing this INSERT and UPDATE.
SAMPLE QUERY: (Structure is Same but modified for readability)
UPDATE @ENTITY SET @FIELD = @VALUE WHERE ID = @KEYID
IF @@ERROR <> 0
BEGIN
INSERT INTO dbo.ErrorLog VALUES( @KEYID + ' , '+ @ENTITY + ' , ' + @FIELD +' , ' + @VALUE )
END
This query is working fine . If there is any error and for some reason if its not able to insert/update the data Its populates the ErrorLog Table and instead of failing the store proc goes for the next row and do teh necessary action
Finally SProc does what it has too
1) Get the data in teh respective tabel and colunm
2) if it cannot insert/ update go for the next row and populate the error log table with what it was n't able to update/ insert
SO Whats the problem? Good question , here is the issue or topic of discussion
1) What is the standard way of Error Handling. Did I atleast follow teh minimum Error Handling criteria.
2) I can see from teh table that, as required, its skipping the row into Error Log table whenevr its not able to do the required functions and going for next row
3) I introduce a Error and when I execute the Sproc it gives me Mesaage:
Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.
Also I see that "Query Completed with Errors" well I said whenever teh SPROC see error do some thing else, then why would it count it as error and give me this message? Why is the SPROC failing.
What Should I do such that it counts or give when ever there is a genuine error. I mean it should not fail at all because I am saying there whenever there is an incapability of Insert/ Delete just simply skip the row and Insert that row in Error Log Table.
Am I missing something in this Proc?
If it will do that then is tehre any way or query or anything I have to do that handles the issue that
Whennver its not able to do whatever I am asking it to do (Ex: If I am asking it to insert INTEGER in Character Field) then an error is raised then just skipp that row insert that row in erro log and go for next row and dont fail the SPROC.
THANKS FOR THE PATIENCE FOR READING AND REPLYING.
View 11 Replies
ADVERTISEMENT
Apr 21, 2006
1) We are writing a custome Source component for Oracle with OCI calls, Could some one please let me know how to Enable Error Handling for the Same,
2) Is it possible to write Custome Error Handeling Component for SSIS? if yes could you please help me on how to write it.
Thanks in advance.
View 1 Replies
View Related
Jul 20, 2005
Hi All,I want to catch the next MSSQL error in my SQL code with following continuecalculationsServer: Msg 17, Level 16, State 1, Line 1SQL Server does not exist or access denied.If REMOTE_SERVER_1 is inaccessible (as in (a) below) the executing of SQLwill not continue with (b) - I need the code in (b) to run despite whetherthe previous exec was successful or not - Any ideas?begin transaction(a) exec REMOTE_SERVER_1...bankinsert '1' , '1' , 1 , 0 , 0(b) print @@errorcommit transactionwhere REMOTE_SERVER_1 is link to server created byEXEC sp_addlinkedserver @server = 'REMOTE_SERVER_1', @srvproduct = '',@provider = 'SQLOLEDB', @datasrc = 'MYCOMP1', @catalog = 'mirror2'EXEC sp_addlinkedsrvlogin @rmtsrvname = 'REMOTE_SERVER_1', .....Exec sp_serveroption 'REMOTE_SERVER_1', 'data access', 'true'Exec sp_serveroption 'REMOTE_SERVER_1', 'rpc', 'true'Exec sp_serveroption 'REMOTE_SERVER_1', 'rpc out', 'true'Exec sp_serveroption 'REMOTE_SERVER_1', 'collation compatible', 'true'Any help will be greatly appreciated
View 1 Replies
View Related
Nov 1, 1999
Hello,
I would like to supress an Informational error that SQL is returning when I run a stored proc that I created. The error message returned is:
Warning: Null value eliminated from aggregate.
The values returned from the stored proc are the results from a 'select * from #tmp_tbl". Before returning the values, I simply create the temp table, populate it and then run the select statement. Prior to getting my results, I get the error message. Can I suppress it and how?
Thank you.
View 1 Replies
View Related
Apr 16, 2008
Hi there,
Can anyone help me in catching @@error value.
I have a stored procedure which return @@error value, I need to read that in my dataaccesslayer and act according to it.
how do I catch the return value from stored procedure in my dataaccesslayer.
if I am not wrong @@error return a bool value
Thanks in advance.
View 1 Replies
View Related
May 1, 2008
dear friends i am writng a store procedure to insert into a two table .table 1 data inserted but when i inserting into a table2 it have some error at that time table 1 data also want to delete.give suggestions
View 3 Replies
View Related
Mar 14, 2000
I am writing a stored procedure that loads transaction logs to a database and I am having trouble trapping meaningful error messages. When ever the load fails, it gives me two error messages, the first one is meaningful and the second one just states that the load ended abnormally. Unforunately, when I capture the error using @@error after the load statement, it is the second error message that I am getting.
Is there anyway to trap the first error message as well?
Thanks
Angela
View 1 Replies
View Related
Jan 21, 1999
I currently have defined a source server, a transformation, and a destination server using DTS. How and where do I create an error routine that would capture any and all errors that would occur. This would include connection error, transformation errors etc. I know the errors can be written out to a text file but I would like them written to a table on my destination server.
The DTS package will be called from an external program using the xp_cmdshell extended stored procedure. We are using it this way as a flag so if one transformation fails it will return a 1. If all are successful it will return a O. These will be our flags to check the errors table in the destination server.
Could someone tell me where this code is to go and what the code will look like. Samples would be the most help.
Thanks
Tom
View 1 Replies
View Related
May 21, 2004
is there any way to do sometype of Error handling with in a Stored Proc? Example, If I have a deadlock, can I trap that error and execute other sql code or will always simply kill the stored proc?
View 1 Replies
View Related
Dec 12, 2006
I have a composite unique key on the audit_hub table that includes TimeStamp, UID, Type, Mailbox all as part of the unique key.
I’m trying to do inserts, and know that in some cases I will violate unique index.
I’m using stored procedure, and want to handle the error gracefully there – just move on.
Reading from text-based log files via .vbs and get back the nasty popup window.
Looks like I have it right but obviously I don’t considering how it’s (not) working.
I thought error handling would be the simplest way to avoid dupe records. Might be necessary to run the same log in more than once, and only want to add the new records since the last insert session.
Here’s what I have. It obviously simply halts and complains immediately after the insert attempt.
ALTER procedure eml_HubInsert
@TimeStamp bigint
,@UID varchar(255)
,@Type varchar(255)
,@MailBox varchar(255)
,@ServerID varchar(50)
as
insert into audit_hub (TimeStamp,UID,Type,Mailbox,ServerID)
values (@TimeStamp,@UID,@Type,@MailBox,@ServerID)
if @@ERROR = 2601
begin
return 0
end
View 2 Replies
View Related
Jul 25, 1998
Hallo... and sorry about my english
1 question:
What Error-Handling msut i mplement in a trigger, who is updating permanently two tables
in a database (with the follow commands: insert, delete and update) ???
thank you !
View 1 Replies
View Related
Dec 5, 2005
I have some stored procedures that insert information from a third party plugin that hooks into our database (so I can't do any client side validiation). The problem I am encountering is that some of the fields I use need to be in DateTime format. In order for SQL SERVER 2000 to be able to insert this field, the Date has to be in the correct syntax or an error is thrown.
Is there any way to do something like this in SQL SERVER 2000
Code:
DELCARE @SomeDate DateTime
Try
Set @SomeDate = CONVERT(DateTime, Parameter1, 101)
Catch
return custom error describing what field is formatted
wrong and exit stored procedure
END
View 3 Replies
View Related
Mar 3, 2005
I am running some bcp copies through a Sql job. I am copying 35 tables in individual steps. However, sometimes the bcp step fails to copy the data, and I want the step to fail if the data is not copied properly. Is that possible? If so, how? Any help is greatly appreciated.
View 2 Replies
View Related
Mar 8, 2005
I have this stored procedure that I need to add error handling to. How would I do that??
REATE PROCEDURE November2000
AS
SELECT TM#, LASTNAME, FIRSTNAME, FINALSUITDONE
FROM dbo.EmployeeGamingLicense
WHERE (FINALSUITDONE BETWEEN CONVERT(DATETIME,
'2000-11-01 00:00:00', 102) AND CONVERT(DATETIME,
'2000-11-30 00:00:00', 102))
GO
View 2 Replies
View Related
Feb 2, 2004
ppl,
i wrote this sql, seems v.straightforward to me.
It works first time round, sets the foreigh key, but second time round should error out to the handler - but it just reports the errors to the message out and dosn't seem to fire the errhandler.
Its gotta be a simple mistake - perhaps you could show me.
DECLARE @ErrorMsg int
BEGIN TRANSACTION
ALTER TABLE TPH_GlobalProductHierarchy
ADD CONSTRAINT SalesSubGrp_fk FOREIGN KEY (SalesSubGroupingID)
REFERENCES TPH_SalesSubGrouping (ID)
SET @ErrorMsg =@@ERROR
IF @ErrorMsg <>0 GOTO ErrorHandler
PRINT 'Success'
COMMIT TRANSACTION
ErrorHandler:
IF @ErrorMsg <> 0
BEGIN
PRINT 'Rollback'
ROLLBACK TRANSACTION
END
View 1 Replies
View Related
Apr 20, 2004
How can i use the system error messages. With RAISERROR
View 1 Replies
View Related
Jun 4, 2008
Can i any one help regd error handling while executing stored procedure.
Sample Sequence of execution :
CREATE procedure RBI_Control_sp
as
begin
set nocount on
begin try
BEGIN TRANSACTION
--Truncating the Table in ramcovm392(fin_ods)
exec fin_ods..trun_sp
--Data Transfer From the Live Server to Dw-Server
exec fin_ods..RBI_Data_Transfer_sp
insert into fin_wh..Status_report([object_name],row,[date])
select 'Data Tranfer','SUCCESS',getdate()
COMMIT TRANSACTION
end try
begin catch
<b> [i need to insert the type of error in status report table]</b>
rollback transaction
insert into fin_wh..Status_report([object_name],row,[date])
select 'Data Tranfer','FAILURE',getdate()
end catch
set nocount off
end
View 2 Replies
View Related
Mar 8, 2006
Hi all,
I am calling some stored procedures from ASP. These strored procedures have to deal with lots of deletes and updates. So i have thought of implementing transaction commits and rollbacks. But if a rollback occurs in these stored procedures, i want to get a value back to asp page, based on this value i will run the next stored procedure.
Can anybody give me some examples for doing this.
Somebody please help me with this!!!!!!!!!
Thanks a lot in advance,
Nitu
View 4 Replies
View Related
Jan 5, 2007
hello. below is a very simple SP i have coded to insert a user into my database. i have created a unique index for the username column on my database table. if the username already i want to convey this to my C# code which is attempting the insert. i am using a combination of TRY/CATCH, RAISERROR and @@ERROR here to achieve my aim. could somebody please look at my code and tell me if the error handling code is OK, or is it overly complicated?
AS
SET NOCOUNT ON
DECLARE @Error int;
BEGIN
BEGIN TRY
INSERT INTO Users(
Username,
Password,
FirstName,
Surname,
DateBirth,
Email,
Id_Country)
VALUES(
@Username,
@Password,
@FirstName,
@Surname,
@DateBirth,
@Email,
@Id_Country)
END TRY
BEGIN CATCH
SELECT @Error = @@ERROR;
IF @Error = 2601
RAISERROR('The username already exists.', 15, 1)
ELSE
RAISERROR('An unknown error occurred.', 15, 1)
RETURN @Error;
END CATCH
SELECT @Id_User = SCOPE_IDENTITY()
END
View 1 Replies
View Related
Jul 3, 2007
need example on how to add event handling condetion in a package using ssis.
my package runs in a loop. the loop creates a connection to diff servers and runs a dynamic query.
i want to add a feature which would let the loop run in the event of connection failure for one server.
thanks in adv
View 1 Replies
View Related
Sep 18, 2007
I have a stored procedure that inserts a new record into a table. The table it inserts into has a unique constraint that utilizes an identity column. Occassionally, this constraint gets violated due to the fact that the app running my stored procedure isn't the only application inserting into the table. Ideally, we would want to change the design to avoid this scenario but these are legacy applications that will eventually be sunsetted. My question is this; is there a way to handle the unique key constraint violation and prevent an exception being thrown in the app calling the stored proc? I know I can check for the error code and handle it within the stored proc but my app still gets an exception caught by the calling method. Can I prevent this from happening? I want for the insert to attempt again and if successful continue processing and not produce the exception. Any help would be greatly appreciated.
View 6 Replies
View Related
Sep 20, 2007
hi
in analysis services when i proccess a cube i got an error that
data from the fact table isnt exists in the dimenstion table
for example fact table sales has column suplier that one of its row
has data that doesnt match with the dimension table
how can i handle this error ?
can i insert instead someyhing else so that the proccess can continue and not failed ?
Thanks
Eyal
View 1 Replies
View Related
Sep 21, 2007
Hi,
I'm trying to decide on the best method for dealing with errors in a DTS package. It is sufficient to retrieve Step failure information after package execution but I have tried both methods. Specifically, these methods are detailed in http://support.microsoft.com/kb/240221. Another article - http://support.microsoft.com/default.aspx?scid=kb;en-us;321525 - details the need to establish a single event sink to avoid "unexpected behaviour". I have used the code as described but noticed very little difference between post execution checking using GetExecutionErrorInfo and the PackageEventSink Interface. Using the Event Sink does retrieve one extra type of error, ie.
"Error at Destination for Row number 2. Errors encountered so far in this task: 1". This error will always give the row number as the last row in the file, in this case an excel file source. This is not really useful, but I don't want to detach the Event Sink because of the possibility of "unexpected behaviour". Could somebody advise? First is it possible to retrieve the line number, and secondly can anyone detail what an example of this unexpected behaviour might be? Finally, is there a way to retrieve a unique key constraint violation from a package if it occurs? It is only caught in the generalised way and produced as "Error at Destination...".
Thanks in advance
View 2 Replies
View Related
May 16, 2007
Hello,
I'm mainly a .net dev and now I want to create a TV function using the CLR inside SQL Server but I have some doubt about the error handling in the function itself and in t-sql.
I have a SP (that I suppose will have a BEGIN TRY ... END TRY BEGIN CATCH ...END CATCH) that call my TV function to get a table made of one row and 2 columns.
My TV function calls some private functions that uses .net classes so I want to handle the exception the potentially could happens.
But these expection shouldn't thrown the error to the caller SP because the SP must continue iven if there is a error but I would to inform somehow the SP that the fields in the table are null because something went wrong
What is the programming pattern to use?
If I write
<Microsoft.SqlServer.Server.SqlFunction(DataAccess:=DataAccessKind.None, FillRowMethodName:="FillDatesRow", isDeterministic:=True, Name:="GetDates", TableDefinition:="StartDate datetime,EndDate datetime")> _
Public Shared Function GetDates(ByVal UTCInputDate As Date) As IEnumerable
Dim StartDate As Date
Dim EndDate As Date
Dim rowArray As ArrayList = New ArrayList
Try
Dim GetDates (1) As Object
GetDates = Function1(UTCInputDate) 'Function that can cause exception directly or indirectly
GetDates (0) = StartDate
GetDates (0) = EndDate
rowArray.Add(GetDates)
Catch ex As Exception
????
End Try
Return rowArray
End Function
Private Shared Sub FillDatesRow(ByVal obj As Object, <Out()> ByRef StartDate As SqlDateTime, <Out()> ByRef EndDate As SqlDateTime)
Try
If obj IsNot Nothing Then
Dim row As Object() = CType(obj, Object())
If row(0) IsNot Nothing Then
StartDate = CType(row(0), DateTime)
Else
StartDate = SqlDateTime.Null
End If
If row(0) IsNot Nothing Then
EndDate = CType(row(1), DateTime)
Else
EndDate = SqlDateTime.Null
End If
Else
StartDate = SqlDateTime.Null
EndDate = SqlDateTime.Null
End If
Catch ex As Exception
Throw
End Try
End Sub
What I have to write in the GetDates' s catch block to avoid that the exception is thrown to the BEGIN CATCH END CATCH of the caller SP but inform anyway the caller??
Any tips and/or resources is welcome!
Thankx
Marina B
View 2 Replies
View Related
Dec 24, 2007
Hey,
My flow is build with in the beginning an sql command in an OLE DB source, this command I use to create an incremental update which works faster than an SCD task.
Now when I debug the package runs but stops after a short time. One control flow with that sql statements rus perfectly but the other gives an error.
The errors I get are:
- [OLE DB Source 1 [2946]] Error: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.
- [DTS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "OLE DB Source 1" (2946) returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.
The dataflow task starts with that sql statement where afterwords I do a data conversion and then I store it in with an OLE DB destination in a table.
Now i don't know why one statement works while the other isn't working...
Does anyone has an idea?
Thanx
View 8 Replies
View Related
Feb 6, 2008
Hey,Here's yet another question for you more knowledgeable than me Up to this point I have been using a try/catch statement when dealing with SQL, for exampleint result = 0;try{result = Int32.Parse(command.ExecuteScalar().ToString());}catch{result = 0;}But I read up one some error handling and I have no idea how to solve this anymore. Since I'll be using the catch block to catch exceptions, something like thiscatch (SqlException){throw;}So I was wondering what is the good, standard practice for dealing with this since I need the catch statement to set result to zero or I would end up with an error.Thanks in advance,Sixten
View 2 Replies
View Related
Sep 2, 2004
I am building a Bulk Insert statement dynamically passing in filename location, etc.
I have coded error handling via the @@ERROR. To test the error handling, I am forcing the file that is bulk inserted to be missing.
The statement is created in a declared variable, IE @SQL:
EXEC(@SQL)
IF @@ERROR <> 0
BEGIN
GOTO ErrorHandler
END
Since the file is missing it causes an error, and the Stored Procedure gives the
Server: Msg 4860, Level 16, State 1, Line 1 Could not find the file etc.
and aborts aborts the whole stored proc at that point. In other words the error handling IF @@ERROR doesn't trap the error and send the process to the error handler routine.
Is there anyway to get the error back from the EXEC, or maybe something has to be set to trap the error because it is fatal? Because of the way the Bulk Insert statement is created dynamically, it appears you have to EXEC the statement once it is built (EXEC(@SQL)).
Any help would be appreciated.
Barry
View 1 Replies
View Related
Apr 4, 2006
Hello to all
I am having a SQLDataSource on my web page to connect with database. Now If it generates any error then where to capture that errors ?? Means at which place(which event or any other place) should i write code for handeling errors ???
View 7 Replies
View Related
Mar 26, 2002
I want to load a smallint field with values from a varchar field; e.g. CAST(field as SMALLINT). This is in a bulk copy insert so of course there are the few fields that have '1773A' for example and error out the CAST. Anyone know of a way to return 0 (or 1) if CAST errors on conversion ?
This is the test script that's trying to convert 3750 records (an unknown minority of records contain alpha characters):
create table alstest (field1 smallint)
insert into alstest (field1)
select CAST(conf_number AS SMALLINT) from conference
View 1 Replies
View Related
Apr 26, 2000
How to capture errors occured in stored procedures in case SQL SERVER7?
View 1 Replies
View Related
Oct 30, 2000
I am using dynamica SQL in one of my stored procs That performs BULKINSERT
on few tables.
If there is a PK constraint violation, I wanted to write an error routine.
But once SP_EXECUTESQL gives an error, the stored proc just abends
not allowing me to ado anything else.
Can anyone help me with some information on how to perform error
handling when I am using Dynamic SQL?
I am also sending the the piece of code and the error message.
CODE: Assume that all variables are declared appropriately.
SET @string = 'BULK INSERT Tb_Manfg ' + char(13) +
'FROM '+ '''' + @path_tb_manfg + '''' + char(13) +
'WITH (FIELDTERMINATOR = ' + '''' + '|=|'+ '''' + ',' + char(13) +
'ROWTERMINATOR = ' + '''' + '
' + '''' + ')'
IF @error = 0
BEGIN
PRINT 'NOW Tb_Manfg GOING TO BE INSERTED.......'
EXEC SP_EXECUTESQL @string
/*
This is where the stored proce abends.
The subsequent code is not executed at all.
*/
PRINT 'ERROR IS.........'
PRINT @@ERROR
IF @@ERROR = 2627
BEGIN
PRINT 'AN ERROR OCCURED WHILE INSERTING INTO Tb_Cateory'
SET @error = @@ERROR
return
END
ELSE
BEGIN
SET @error = @@ERROR
END
ERROR MESSAGE:
Server: Msg 2627, Level 14, State 1, Line 1
Violation of PRIMARY KEY constraint 'PK__TB_Manfg__1FCDBCEB'. Cannot insert duplicate key in object 'TB_Manfg'.
The statement has been terminated.
Thanks a lot.
Sush.
View 1 Replies
View Related
Dec 1, 1999
First Question:
I have a script that can run successfully via the Query Analyzer even though it reports a few errors with error number 8152
"Server: Msg 8152, Level 16, State 2, Procedure IndexDensity, Line 85
String or binary data would be truncated.
The statement has been terminated."
Why does the script continue to finish in the Query Analyzer but fail immediately when it encounters the same error as a scheduled Job?
Second Question:
The serverity is 16 (user managed) so I would like to simply skip over the problem code/row and contiue with the next row to be modified.
How can I handle the error and yet have the script continue when it is scheduled as a job?
Additional Background:
I would like to do something like this:
If this line...
"SELECT @scan_dnsty = convert(decimal(5,2),RTRIM(substring(density_str, charindex('%',density_str) - 6, 6)))
FROM #Density_Out_Tbl"
...generates the error, then simply (skip it and move on to the next row)Fetch the next row.
I hope that is clear,
Thank you in advance.
View 2 Replies
View Related
Mar 16, 1999
Hello all.
I have a stored procedure that loops through a customer list and email the customer via xp_sendmail. My problem is that if there is a bad email address, the sproc ends right there.
Is there a way to trap for xp_sendmail errors so my sproc won't fail? I didn't see anything in BOL.
Thanks.
View 1 Replies
View Related