详细描述:Oracle 判断表,如果列名存在,就删除列名。
解决方案 »
- 资料异常消失
- 用sqlplus可以連接 但是用plsql developer 或者企業管理器就不能連接
- 请教各位大侠.有第三方软件来操作oracle数据库吗?
- 如何拷贝数据库的结构
- vb.net调用Oracle存储过程如何传递datatable的参数?
- 如何使用"INSERT INTO"将ORACLE中的表插到SQL SERVER数据库中
- 求助一个批处理文件?
- 我的oracle以后,可以启动数据库,可是不能装载阿,请问是什么 原因阿
- 哪里有比较完整的sql server与oracle的sql语法比较?
- oracle 存储过程错在那里,请指点
- 周 季的SQL该怎么写?
- oracle用户管理问题,请高手帮帮忙!
select count(*)
from dba_tab_columns
where table_name = 'table_name' and column_name = 'column_name'
---------建表
CREATE TABLE KB_QA
(qa_id INT,
order_no Number(6,2)
);
-------- 测试数据
INSERT INTO KB_QA VALUES(1,11.11);
INSERT INTO KB_QA VALUES(2,12.12);
INSERT INTO KB_QA VALUES(3,13.13);
INSERT INTO KB_QA VALUES(4,14.14);
COMMIT;
------ ALTER前
QA_ID ORDER_NO
----- --------
1 11.11
2 12.12
3 13.13
4 14.14
------------ sp
CREATE OR REPLACE PROCEDURE ALTER_KB_QA AS
V_SQL VARCHAR2(1000);
V_COLUMN_NAME VARCHAR2(100) := 'ORDER_NO';
V_TABLE_NAME VARCHAR2(100) := 'KB_QA';
V_COUNT INT;BEGIN
----- 1
SELECT COUNT(*)
INTO V_COUNT
FROM USER_TAB_COLUMNS T
WHERE T.TABLE_NAME = V_TABLE_NAME
AND T.COLUMN_NAME = V_COLUMN_NAME; IF V_COUNT > 0
THEN
V_SQL := 'ALTER TABLE ' || V_TABLE_NAME || ' DROP COLUMN ' ||
V_COLUMN_NAME;
EXECUTE IMMEDIATE V_SQL;
DBMS_OUTPUT.PUT_LINE(V_TABLE_NAME || '.' || V_COLUMN_NAME ||
' has dropped!');
ELSE
DBMS_OUTPUT.PUT_LINE('There is no column named :' || V_TABLE_NAME || '.' ||
V_COLUMN_NAME);
END IF;
END;
/-------- 运行sp
SQL> EXEC ALTER_KB_QA; -------- 结果
QA_ID
------
1
2
3
4
suncrafted XD解答的贴,认真劲就让人佩服,友情顶一下。
呵呵 sun每次代码都很详细
INTO V_CNT
FROM DUAL
WHERE EXISTS (SELECT 1 FROM dba_tab_columns WHERE table_name = 'table_name'and column_name = 'column_name' );