【问题标题】:need to modify the below oracle query需要修改下面的oracle查询
【发布时间】:2016-04-18 03:50:10
【问题描述】:

我有下面的脚本,我想修改它,如果它是第一次执行,那么它将创建列,但如果它是第二次执行,那么它会显示不正确的失败消息它应该显示创建列的消息,并且如果出现任何异常,可以说由于某些技术异常而没有创建列,那么它应该显示失败消息,请告知如何实现这一点

SELECT COUNT(*) INTO L_COL_EXISTS FROM USER_TAB_COLS WHERE COLUMN_NAME = 'TOR' and TABLE_NAME='AVOICE';    
    IF L_COL_EXISTS = 1
    THEN          
      outcome := 'Success';
    ELSE
      outcome := 'Fail';
    END IF;  
    DBMS_OUTPUT.PUT_LINE(outcome);  

请大家多多指教

【问题讨论】:

  • 如何添加列?你知道声明吗?

标签: oracle plsql


【解决方案1】:

我想它可以帮助你

CREATE OR REPLACE PROCEDURE add_column
(
   v_table_name  IN VARCHAR2,
   v_column_name IN VARCHAR2,
   v_column_type IN VARCHAR2
) 
IS
  v_column_exists     pls_integer;
  v_ddl_str           varchar2(1024);
BEGIN
    BEGIN
        SELECT count(*)
        INTO   v_column_exists
        FROM   user_tab_columns
        WHERE  table_name = upper(v_table_name)
               and column_name = upper(v_column_name);
    EXCEPTION
        WHEN OTHERS THEN
             RAISE;
    END;

    if v_column_exists = 0 then 
        v_ddl_str := 'alter table ' || v_table_name || ' add ( ' ||  v_column_name || ' ' || v_column_type || ')';
        BEGIN
            EXECUTE IMMEDIATE alter_str;
        EXCEPTION
           WHEN OTHERS THEN
              dbms_output.put_line ('something wrong');
              RAISE;
        END;
    ELSE
        dbms_output.put_line ('Column exists');
    END IF;
EXCEPTION
    WHEN OTHERS THEN
        RAISE;    
END add_column;
/    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2017-10-27
    • 1970-01-01
    • 2016-04-09
    相关资源
    最近更新 更多