麻烦看一下程序。 第一种的给这个table变量赋值的方法太麻烦。 第二种的方法我试了下。系统不认这个虚拟表名。 我想问的就是,第二种方法能不能实现。是不是我写的有什么问题。CREATE OR REPLACE PROCEDURE TEMP IS TYPE W_ROW_TYPE IS RECORD ( OCRコード CHAR(4), OCRコード2 CHAR(4) ); TYPE W_TABLE_TYPE IS TABLE OF W_ROW_TYPE INDEX BY BINARY_INTEGER; w_row W_ROW_TYPE ; W_TABLE1 W_TABLE_TYPE ; BEGIN for i in 0..2 loop w_row.OCRコード := '123' || i; w_row.OCRコード2 := '567' || i; W_T乗務員勤番テーブル(i) := w_row; end loop; for i in 0..2 loop DBMS_OUTPUT.PUT_LINE(W_T乗務員勤番テーブル(I).OCRコード ); DBMS_OUTPUT.PUT_LINE(W_T乗務員勤番テーブル(I).OCRコード2); w_row.OCRコード2 := '567' || i; W_T乗務員勤番テーブル(i) := w_row; end loop; INSERT INTO W_TABLE1 ( SELECT OCRコード , OCRコード2 FROM (与上面记录变量同结构的表) ); END ;
TYPE W_TABLE_TYPE IS TABLE OF W_ROW_TYPE INDEX BY BINARY_INTEGER; 这样声明的是一个表变量,是有生存范围的 你在这个存储过程的外部直接插入 肯定会找不到这个表的存在直接在包里面执行插入就可以了或者直接声明一个temporary table on session 也可以
第一种的给这个table变量赋值的方法太麻烦。
第二种的方法我试了下。系统不认这个虚拟表名。
我想问的就是,第二种方法能不能实现。是不是我写的有什么问题。CREATE OR REPLACE PROCEDURE TEMP
IS
TYPE W_ROW_TYPE IS RECORD
( OCRコード CHAR(4),
OCRコード2 CHAR(4)
); TYPE W_TABLE_TYPE IS TABLE OF W_ROW_TYPE INDEX BY BINARY_INTEGER;
w_row W_ROW_TYPE ;
W_TABLE1 W_TABLE_TYPE ;
BEGIN
for i in 0..2 loop
w_row.OCRコード := '123' || i;
w_row.OCRコード2 := '567' || i;
W_T乗務員勤番テーブル(i) := w_row;
end loop; for i in 0..2 loop
DBMS_OUTPUT.PUT_LINE(W_T乗務員勤番テーブル(I).OCRコード );
DBMS_OUTPUT.PUT_LINE(W_T乗務員勤番テーブル(I).OCRコード2);
w_row.OCRコード2 := '567' || i; W_T乗務員勤番テーブル(i) := w_row;
end loop;
INSERT INTO W_TABLE1
(
SELECT OCRコード , OCRコード2 FROM (与上面记录变量同结构的表)
);
END ;
insert into table(
col1,
col2
)values
(
rec_table.col1,
rec_table.col2
);
负值也一样
你在这个存储过程的外部直接插入 肯定会找不到这个表的存在直接在包里面执行插入就可以了或者直接声明一个temporary table on session 也可以