我需要创建一个视图,但我得到此错误"无效的标识符".问题是我尝试访问一个不存在的colum名称,但我需要在我的视图中(如果列不存在,我需要将null).这是我的代码sql:
select .......
case
when
when exists (select 1 from user_tab_columns where table_name = 'Student' and COLUMN_NAME = 'email') then nvl(SUBSTR(student.email, 0, 100),'') else ''
end as STUDENT_EMAIL,
Run Code Online (Sandbox Code Playgroud)
这是扔" invalid identifier".我需要创建这个视图并创建字段"email",如果存在colum,我必须插入正确的,否则我放入字段值null;
使用动态SQL并尝试编译视图,如果有错误,则使用NULL:
Oracle安装程序:
CREATE TABLE students ( id, name )
AS SELECT 1, 'Alice' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
创建视图:
DECLARE
invalid_identifier EXCEPTION;
PRAGMA EXCEPTION_INIT( invalid_identifier, -904);
BEGIN
EXECUTE IMMEDIATE 'CREATE VIEW student_view AS SELECT id, name, SUBSTR( email, 1, 100 ) AS STUDENT_EMAIL FROM students';
EXCEPTION
WHEN invalid_identifier THEN
EXECUTE IMMEDIATE 'CREATE VIEW student_view AS SELECT id, name, CAST( null AS VARCHAR2(100) ) AS STUDENT_EMAIL FROM students';
END;
/
Run Code Online (Sandbox Code Playgroud)
结果:
SELECT * FROM student_view;
Run Code Online (Sandbox Code Playgroud)
ID | NAME | STUDENT_EMAIL -: | :---- | :------------ 1 | Alice | null
db <> 在这里小提琴