带有变量的普适存储过程

Pervasive Stored Proceedure with variable

我想 运行 我的查询 windows 中的这段代码位于 Excel 中,但在它完成第一个语句后我收到错误消息。如果可以 运行 它在 PCC 中很好。我假设我需要创建一个带有变量的存储过程。 parent = 'B-8579-K' 是变量值。

  1. 如何创建存储过程?
  2. 如何调用存储过程并传递变量?
  3. 调用甚至可以在 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 通话吗?