Search code examples
sqlsybasesap-ase

Check if column exists then alter column from the table?


I want to write sql script that should check if column exists in the table, and then remove the column if previous statement is true. The database I use is Sybase ASE, and this is the code that I tried to use:

IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
    BEGIN
        ALTER TABLE security DROP maiden_name
    END

The code above executed successfully first time I run it. The second time I goth the error:

Invalid column name 'maiden_name'

If column does not exist the ALTER TABLE block of code shouldn't run. Is there a way to achieve this is Sybase? Thank you.


Solution

  • You can use dynamic SQL:

    IF EXISTS (SELECT 1 FROM syscolumns WHERE id = object_id('users') AND name = 'maiden_name')
        BEGIN
            EXEC('ALTER TABLE security DROP maiden_name')
        END;
    

    The problem is that the parser is trying to parse the ALTER during the compilation phase, and it gets an error if the column does not exist.