When you put an identifier in double-quotes, it becomes a case-sensitive identifier. You would need to refer to it enclosed in double quotes and with the proper casing going forward.
insert into t1 (x, y, z, z1)
values (c1.x, c1.y, c1.z, c1."a1");
should work. However, creating case-sensitive identifiers in the first place is generally a really bad idea. It is terribly annoying to have to type a bunch of double quotes every time you want to reference a column name. And having some identifiers case sensitive and others case insensitive is going to drive whoever has to support your code absolutely batty. It would make much more sense to use a normal case insensitive alias
cursor c1 is
select x, y, a.z, b.z a1
from t3 a, t4 b;
As an aside, are you really trying to generate a Cartesian product between t3
and t4
? That is generally a very bad idea...