Archive

Posts Tagged ‘exists’

if exists syntax in sybase

April 20th, 2010 1 comment

Below shows the if exists usage with examples in sybase

If exists (select record)
begin
sql statement 1
sql statement 2
end
else
begin
sql statement 3
sql statement 4
end

Example

Scripts that include constructs like the following may produce errors if the table described in the script does not include the specified column:

if exists (select 1 from syscolumns
where id = object_id("some_table")
and name = "some_column")
begin
alter table some_table drop some_column
end

In this example, some_column must exist in some_table for the batch to succeed.

If some_column exists in some_table, the first time you run the batch, alter table drops the column. On subsequent executions, the batch does not compile.

Adaptive Server raises these errors while preprocessing this batch, which are similar to those that are raised when a normal select tries to access a nonexistent column. These errors are raised when you modify a table’s schema using clauses that require a data copy. If you add a null column, and use the above construct, Adaptive Server does not raise these errors.

To avoid such errors when you modify a table’s schema, include alter table in an execute immediate command:

if exists (select 1 from syscolumns
where id = object_id("some_table")
and name = "some_column")
begin
exec ("alter table some_table drop
some_column")
end

Because the execute immediate statement is run only if the if exists() function succeeds, Adaptive Server does not raise any errors when it compiles this script.

You must also use the execute immediate construct for other uses of alter table, for example, to change the locking scheme, and for any other cases when the command does not require data copy.

VN:F [1.9.22_1171]
Rating: 7.0/10 (6 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 4 votes)