过程从其他表插入值

时间:2017-11-22 16:52:52

标签: sql oracle procedure

我在以下简单程序中遇到错误

Create or Replace PROCEDURE "My Procedure" 
  (
    vendor_name in VARCHAR2
  )
BEGIN
INSERT INTO cust_vendors_test (cust_vendor_name) 
select  pv.vendor_name from po_vendors@prod09 pv
END;
/

3 个答案:

答案 0 :(得分:2)

INSERT INTO ... SELECT声明的末尾添加分号:

INSERT INTO cust_vendors_test (cust_vendor_name) 
  select  pv.vendor_name from po_vendors@prod09 pv;
                                                  ^

另外一些建议:

  • 下次发布错误消息。如果你这样做的话,你可能会立即得到答案。
  • 重新考虑程序名称。你会经历许多不必要的悲痛,称为(a)名称中有空格,(b)具有区分大小写的名称。

答案 1 :(得分:0)

Zunain,你得到的具体错误是什么?

如果不知道我们正在处理什么,我已经重新格式化,这是我的建议。

USE [MyDatabase]
GO

DROP PROCEDURE [Schema].[MyProcedure]
GO

CREATE PROCEDURE [Schema].[MyProcedure]
    @vendor_name  VARCHAR(100)

AS
BEGIN

INSERT INTO cust_vendors_test 
    (
        cust_vendor_name
    ) 
SELECT  pv.vendor_name AS cust_vendor_name
FROM    po_vendors@prod09 AS pv

END

答案 2 :(得分:0)

您可以在创建程序之前使用'exists' 即...

IF EXISTS( SELECT * FROM sys.objects WHERE NAME = "My Procedure") BEGIN DROP PROCEDURE "My Procedure" END;

Create PROCEDURE "My Procedure" 
AS
INSERT INTO cust_vendors_test (cust_vendor_name) VALUES
(select  pv.vendor_name from po_vendors@prod09 pv)
GO;