带有变量的普适存储过程
Pervasive Stored Proceedure with variable
我想 运行 我的查询 windows 中的这段代码位于 Excel 中,但在它完成第一个语句后我收到错误消息。如果可以 运行 它在 PCC 中很好。我假设我需要创建一个带有变量的存储过程。 parent = 'B-8579-K' 是变量值。
- 如何创建存储过程?
- 如何调用存储过程并传递变量?
调用甚至可以在 Excel 内工作而不会导致错误吗?
delete z_Expl_BOM_Temp;
insert into z_Expl_BOM_Temp
select
Parent, L1_Child_Seq, L1_Child, L1_Child_QTY,
L2_Child_Seq, L2_Child, L2_Child_QTY,
L3_Child_Seq, L3_Child, L3_Child_QTY,
L4_Child_Seq, L4_Child, L4_Child_QTY,
L5_Child_Seq, L5_Child, L5_Child_QTY
from
EGC_Expl_BOM_TT
where
Parent = 'B-8579-K' ;
在 Pervasive 中创建存储过程已记录 here。
带参数的存储过程的示例是:
CREATE PROCEDURE Checkmax(in :classid integer);
BEGIN
DECLARE :numenrolled integer;
DECLARE :maxenrolled integer;
SELECT COUNT(*) INTO :numenrolled FROM Enrolls WHERE class_ID = :classid;
SELECT Max_size INTO :maxenrolled FROM Class WHERE id = :classid;
IF (:numenrolled >= :maxenrolled) THEN
PRINT 'Enrollment Failed. Number of students enrolled reached maximum allowed for this class' ;
ELSE
PRINT 'Enrollment Possible. Number of students enrolled has not reached maximum allowed for this class';
END IF;
END;
然后调用它:
CALL Checkmax(101)
我终于成功创建了SP:
CREATE PROCEDURE EGC_Expl_BOM_TT(in :CParent varchar(20));
BEGIN
delete from z_Expl_BOM_Temp;
insert into z_Expl_BOM_Temp
select
Parent, L1_Child_Seq, L1_Child, L1_Child_QTY,
L2_Child_Seq, L2_Child, L2_Child_QTY,
L3_Child_Seq, L3_Child, L3_Child_QTY,
L4_Child_Seq, L4_Child, L4_Child_QTY,
L5_Child_Seq, L5_Child, L5_Child_QTY
from
EGC_Exploded_BOM
where
Parent = :CParent;
END;
我可以打电话在 PCC 中就好了。但是,当我 运行 Excel 的查询 window 中的 CALL 将执行该过程但是当它完成时我得到这个错误:
"查询没有 运行,或者数据库 table 无法打开。
检查数据库服务器或联系您的数据库管理员。请确保外部数据库可用且未被移动或重组,然后重试该操作。"
这现在可能会变成一个 VBA 问题。我可以 运行 与 VBA 通话吗?
我想 运行 我的查询 windows 中的这段代码位于 Excel 中,但在它完成第一个语句后我收到错误消息。如果可以 运行 它在 PCC 中很好。我假设我需要创建一个带有变量的存储过程。 parent = 'B-8579-K' 是变量值。
- 如何创建存储过程?
- 如何调用存储过程并传递变量?
调用甚至可以在 Excel 内工作而不会导致错误吗?
delete z_Expl_BOM_Temp; insert into z_Expl_BOM_Temp select Parent, L1_Child_Seq, L1_Child, L1_Child_QTY, L2_Child_Seq, L2_Child, L2_Child_QTY, L3_Child_Seq, L3_Child, L3_Child_QTY, L4_Child_Seq, L4_Child, L4_Child_QTY, L5_Child_Seq, L5_Child, L5_Child_QTY from EGC_Expl_BOM_TT where Parent = 'B-8579-K' ;
在 Pervasive 中创建存储过程已记录 here。
带参数的存储过程的示例是:
CREATE PROCEDURE Checkmax(in :classid integer);
BEGIN
DECLARE :numenrolled integer;
DECLARE :maxenrolled integer;
SELECT COUNT(*) INTO :numenrolled FROM Enrolls WHERE class_ID = :classid;
SELECT Max_size INTO :maxenrolled FROM Class WHERE id = :classid;
IF (:numenrolled >= :maxenrolled) THEN
PRINT 'Enrollment Failed. Number of students enrolled reached maximum allowed for this class' ;
ELSE
PRINT 'Enrollment Possible. Number of students enrolled has not reached maximum allowed for this class';
END IF;
END;
然后调用它:
CALL Checkmax(101)
我终于成功创建了SP:
CREATE PROCEDURE EGC_Expl_BOM_TT(in :CParent varchar(20));
BEGIN
delete from z_Expl_BOM_Temp;
insert into z_Expl_BOM_Temp
select
Parent, L1_Child_Seq, L1_Child, L1_Child_QTY,
L2_Child_Seq, L2_Child, L2_Child_QTY,
L3_Child_Seq, L3_Child, L3_Child_QTY,
L4_Child_Seq, L4_Child, L4_Child_QTY,
L5_Child_Seq, L5_Child, L5_Child_QTY
from
EGC_Exploded_BOM
where
Parent = :CParent;
END;
我可以打电话在 PCC 中就好了。但是,当我 运行 Excel 的查询 window 中的 CALL 将执行该过程但是当它完成时我得到这个错误:
"查询没有 运行,或者数据库 table 无法打开。 检查数据库服务器或联系您的数据库管理员。请确保外部数据库可用且未被移动或重组,然后重试该操作。"
这现在可能会变成一个 VBA 问题。我可以 运行 与 VBA 通话吗?