程序从其他 table 插入值
Procedure Insert value from other table
我在下面的简单程序中遇到错误
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;
/
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
您可以在创建过程之前简单地使用 '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;
在您的 INSERT INTO ... SELECT
语句末尾放一个分号:
INSERT INTO cust_vendors_test (cust_vendor_name)
select pv.vendor_name from po_vendors@prod09 pv;
^
一些额外的建议:
- 下次,post 错误信息。如果您这样做了,您可能会立即得到答复。
- 重新考虑过程名称。调用 (a) 名称中包含 space 且 (b) 名称区分大小写的过程时,您会经历很多不必要的痛苦。
程序头中缺少两个东西 IS
,sql 之后 semicolon
。
以下代码有效:
Create or Replace PROCEDURE "My Procedure"
(
vendor_name in VARCHAR2
) IS
BEGIN
INSERT INTO cust_vendors_test (cust_vendor_name)
select pv.vendor_name from po_vendors@prod09 pv;
END;
/
但是您最好将此过程命名为 My_Procedure
而不是 "My 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;
/
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
您可以在创建过程之前简单地使用 '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;
在您的 INSERT INTO ... SELECT
语句末尾放一个分号:
INSERT INTO cust_vendors_test (cust_vendor_name)
select pv.vendor_name from po_vendors@prod09 pv;
^
一些额外的建议:
- 下次,post 错误信息。如果您这样做了,您可能会立即得到答复。
- 重新考虑过程名称。调用 (a) 名称中包含 space 且 (b) 名称区分大小写的过程时,您会经历很多不必要的痛苦。
程序头中缺少两个东西 IS
,sql 之后 semicolon
。
以下代码有效:
Create or Replace PROCEDURE "My Procedure"
(
vendor_name in VARCHAR2
) IS
BEGIN
INSERT INTO cust_vendors_test (cust_vendor_name)
select pv.vendor_name from po_vendors@prod09 pv;
END;
/
但是您最好将此过程命名为 My_Procedure
而不是 "My Procedure"
以减轻调用。