基本上我来自MS SQL后台,但是这种情况是我需要在Oracle中创建一个具有临时表并在Begin内的查询-End im更新该表的行,最后我想要一个select语句来输出桌子。
CREATE GLOBAL TEMPORARY TABLE temp_users (
id number(5) NOT NULL,
name varchar2(50) NOT NULL,
surname varchar2(50) NOT NULL ) ON COMMIT DELETE ROWS;
Declare
dd varchar(400);
Begin
INSERT INTO temp_users VALUES (1, 'John', 'Smith');
INSERT INTO temp_users VALUES (2, 'Anne', 'Parker');
INSERT INTO temp_users VALUES (3, 'Kate', 'Doe');
INSERT INTO temp_users VALUES (1, 'John', 'Smith');
INSERT INTO temp_users VALUES (2, 'Anne', 'Parker');
INSERT INTO temp_users VALUES (3, 'Kate', 'Doe');
// this code i have used to return the table
execute immediate'SELECT * FROM temp_users';
execute immediate 'drop table temp_users';
End;
答案 0 :(得分:0)
有几种选择,您可以使用bulk collect into
子句简单地返回所有内容,例如在此Oracle example中,然后将其返回到外部。
或者您可以使用PIPELINED
子句,在这种情况下,您将创建一个游标并将其通过管道传递到外部,例如:
FUNCTION some_fn
(
in_1 IN NUMBER,
in_2 IN VARCHAR2 DEFAULT NULL
)
RETURN some_table_type PIPELINED
[…]
FOR l_row IN c_some_cursor
LOOP
PIPE ROW(l_row);
END LOOP;
在两种情况下,您都应声明表变量 TYPE ,例如here。您的函数应该(因为函数可能最适合您)返回该表变量类型。