我的模式为vehicle(vehicle_no,engine_no,offence_count,license_status,owner_no);我使用查询创建了一个类似于vehicle表的新表
create table vehi as select * from vehicle where 1=2;
我试着像这样使用这个过程
create or replace procedure dispvehicle(num in number) begin select * into vehi from vehicle where vehicle_no=num; end; /
但是这个过程显示了一个错误
"3/1 PL/SQL: SQL Statement ignored
3/15 PLS-00403: expression 'VEHI' cannot be used as an INTO-target of
a SELECT/FETCH statement
3/20 PL/SQL: ORA-00904: : invalid identifier"你能帮我解决这个问题吗?
发布于 2018-02-22 23:39:51
您不能像以前那样在表中插入数据。尝试使用:
CREATE OR REPLACE PROCEDURE dispvehicle (num IN NUMBER) AS
BEGIN
INSERT INTO VEHI('fields') SELECT 'fields' FROM vehicle WHERE vehicle_no=num;
END dispvehicle;
/发布于 2018-02-22 23:47:40
您必须将变量vehi定义为rowtype,即使vehi是数据库中已定义的对象,通过我提到的变量定义,也不会出现任何问题,并且它将接受vehi作为local变量,而不是db的object。顺便说一句,过程的定义中缺少is子句。
因此,您可以成功地尝试以下操作:
create or replace procedure dispvehicle(num in number) is
vehi vehicle%rowtype;
begin
select * into vehi from vehicle where vehicle_no=num;
end;https://stackoverflow.com/questions/48930971
复制相似问题