代码如下:
cursor c1 is
select x, y, a.z, b.z "a1" from t3 a, t4 b;
Run Code Online (Sandbox Code Playgroud)
以下从c1获取数据为
insert into t1 (x, y, z, z1) values (c1.x, c1.y, c1.z, c1.a1);
Run Code Online (Sandbox Code Playgroud)
编译后,由于未声明组件a1,因此出现错误.和列不允许在这里.PLSQL的新功能,因为我认为不需要声明别名.
将标识符放在双引号中时,它将成为区分大小写的标识符.你需要用双引号括起来并用正确的套管进行引用.
insert into t1 (x, y, z, z1)
values (c1.x, c1.y, c1.z, c1."a1");
Run Code Online (Sandbox Code Playgroud)
应该管用.但是,首先创建区分大小写的标识符通常是一个非常糟糕的主意.每次要引用列名时必须输入一堆双引号是非常烦人的.并且有一些标识符区分大小写,而其他一些不区分大小写会驱动任何必须支持您的代码的人绝对是蹩脚的.使用正常的不区分大小写的别名会更有意义
cursor c1 is
select x, y, a.z, b.z a1
from t3 a, t4 b;
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你是否真的试图在t3和之间生成笛卡尔积t4?这通常是一个非常糟糕的主意......