Hi,

I m new in sql anywhere 12 database. I cant find out how to catch error inside stored procedure.

In MSSQL I use

BEGIN TRY

-- code to do

END TRY
BEGIN CATCH

-- code to log error and return error message to client

END

How to do something similar in sql anywhere 12 stored procedure? I m using T-SQL syntax.

Thx Tomaz

asked 22 Dec '12, 10:11

tomazs's gravatar image

tomazs
50114
accept rate: 0%


permanent link

answered 22 Dec '12, 13:12

AlexeyK77's gravatar image

AlexeyK77
70761224
accept rate: 8%

I try to use example from help but this is not generic error handling. If I get it right is needed to declare error type before executing code? Is it posible that server return message what kind of error happend inside BEGIn END?

(24 Dec '12, 06:30) tomazs
permanent link

answered 22 Dec '12, 15:18

Breck%20Carter's gravatar image

Breck Carter
27.1k424582831
accept rate: 21%

Thx. This work only if I select Watcom-sql but I want to write procedures in Transact SQL. I could probably check SQLSTATE or SQLCODE aftter every statment but this is what we do yeas ago :0))

(24 Dec '12, 06:23) tomazs

TSQL in SA oly for compatibility with ASE. ASE as I know don't support try/catch blocks.

(24 Dec '12, 07:03) AlexeyK77

Aha, so is it better switch to Watcom SQL? I stuck on first procedure :0)) so not lot to recreate.

(24 Dec '12, 07:20) tomazs
Replies hidden
2

Yes... I think everyone here will agree that Watcom SQL is a much improved syntax... more features, especially.

(24 Dec '12, 10:12) Breck Carter
1

Yes, watcom SQL much better than tsql.

(24 Dec '12, 11:06) AlexeyK77

Just a few more hints:

  • I fully agree with Breck and Alexey that Watcom-SQL is the recommended SQL dialect within SQL Anywhere - and note that you can declare several EXCEPTION clauses within one SQL block, so you can use structured exception handling - similar to using several catch blocks in PLs like C++/Java/C#. In contrast, T-SQL's TRY/CATCH just allows for one CATCH block per TRY block.

  • However, if you want/have to be compatible to other DBMSs like ASE or MS SQL Server, using T-SQL code is usually possible in SQL Anywhere. For T-SQL code, you may have a look at the on_tsql_error option and that comparison.

  • If MS-SQL compatibility is a strong requirement, and if you like to get familiar with SQL Anywhere but don't need a productive solution in the very near future, you may also consider having a look at the SQL Anywhere 16 beta called "Nagano". I can't tell whether there is support for something like a TRY/CATCH construct there - but you may check for yourself.

permanent link

answered 27 Dec '12, 03:51

Volker%20Barth's gravatar image

Volker Barth
29.7k294444650
accept rate: 32%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×14

question asked: 22 Dec '12, 10:11

question was seen: 3,154 times

last updated: 27 Dec '12, 03:51