有一张表为telp的表,需要知道里面是否存在字段name,有的话执行select * form telp 查询语句,没有的话执行select * from telp where age = 1;
这种语句该怎么写啊;(注意是判断存不存在字段,不是值)
DECLARE
num NUMBER;
BEGIN
SELECT COUNT(1)
INTO num
from cols
where table_name = upper('telp')
and column_name = upper('name');
IF num > 0 THEN
execute immediate 'select * from telp';
ELSE
execute immediate 'select * from telp where age=1';
END IF;
END;
sql语句没有办法实现的,你要明白一个原则。sql是静态的,也就是编译期就会检查对象是否存在,如果对象不存在会在编译期的语义检查阶段就报错,并不会进入执行阶段。在存储过程中使用动语句可以实现你的要求。但是除非你是基于数据库的应用,否则不建议这么干。