0

Oracle d2k のキー コミット トリガーで更新クエリを実行しようとするとエラーが発生します。エラーは次のとおりです。

完全なコードは次のとおりです。 ---

DECLARE
LS_STATUS VARCHAR2(1);
LS_COUNT VARCHAR2(3);
BEGIN
    GO_BLOCK('BOO_BLOCK_CAST');
    LS_COUNT:=0; 
    IF :BOO_BLOCK_CAST.NBT_CAST_NO IS NOT NULL THEN
         GO_BLOCK('V_MM_FG_STOCK');
         FIRST_RECORD;
         LOOP
           IF :V_MM_FG_STOCK.QNTY_PRODUCT  =:QNTY_PRODUCT THEN              
             IF :V_MM_FG_STOCK.BUNDLE_ID IS NOT NULL THEN
                 IF :V_MM_FG_STOCK.NBT_CHK_BOX = 'Y' AND :V_MM_FG_STOCK.LN_PRODUCT < 12 THEN
                  BEGIN
                    UPDATE  V_MM_FG_STOCK
                        SET MFS_CD_PROD_ACTL   =  '300',
                            MFS_SEC2_ACTL      = :V_MM_FG_STOCK.SEC2_ACTL,      
                MFS_LN_PRODUCT     = :V_MM_FG_STOCK.LN_PRODUCT,
                MFS_QNTY_PRODUCT   = :V_MM_FG_STOCK.QNTY_PRODUCT,   
                            MFS_IND_AMEND      = 'A',
                    MFS_STATUS         = 'A'       
                                  WHERE MFS_BUNDLE_ID = :V_MM_FG_STOCK.BUNDLE_ID;
                                    COMMIT;
                                    LS_COUNT := LS_COUNT + 1;
                                 EXCEPTION
                                    WHEN NO_DATA_FOUND THEN
                                       MESSAGE(SQLERRM);
                                       MESSAGE(SQLERRM,NO_ACKNOWLEDGE);
                                    WHEN OTHERS THEN
                                       MESSAGE (SQLERRM);
                                       MESSAGE (SQLERRM,NO_ACKNOWLEDGE);
                                 END;                             
                ELSE  
                 MESSAGE('NO MORE BILLETS FOR THIS CAST NO.');
                 MESSAGE('NO MORE BILLETS FOR THIS CAST NO.',NO_ACKNOWLEDGE);
                 RAISE FORM_TRIGGER_FAILURE; 
                 END IF;
             ELSE
                GO_BLOCK('V_MM_FG_STOCK');
                 NEXT_RECORD;                 
             END IF;
           ELSE 
            MESSAGE ('NEW QUANTITY SHOULD NOT BE MORE THAN OLD QUANTITY...');
             RAISE FORM_TRIGGER_FAILURE;  
             EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';                   
         NEXT_RECORD;     
         END IF;     
         END LOOP;
       ELSE 
         MESSAGE('PLEASE ENTER THE CAST NO. FIRST');
         MESSAGE('PLEASE ENTER THE CAST NO. FIRST',NO_ACKNOWLEDGE);
         raise form_trigger_failure;
       END IF;
       commit_form;
END;

どこでも--

V_MM_FG_STOCK is table name,
BOO_BLOCK_CAST is table name,

plsはできるだけ早く私に提案します....私はその答えをより良くすることを楽しみにしています.....非常に非常に前もって感謝します........plzは私を助けてくれます...


構造体での LNK 2001 エラー

多くのプロジェクトで使用されるいくつかの計算を含む h ファイルと cpp ファイルがあります。

今、私はそれらを別のdllに入れようとしたので、ファイルはすべてのプロジェクトに含まれるべきではありません。

リンクすると、構造体の LNK2001 (未解決のシンボル) エラーが発生しますが、lib と dll は適切な場所にあります。

私は

#ifdef TOOLS_EXPORTS
#define TOOLS_API __declspec(dllexport)
#else
#define TOOLS_API __declspec(dllimport)
#endif

このマクロは、いくつかのメソッドでうまく機能します。

構造体はそのように定義されています

TOOLS_API typedef  struct  {
char Name[128];
}  uTSystem;

そして、dll からこの構造体を使用するファイルでは、正しく定義されています (?)

extern uTSystem ABC;

エラーメッセージは次のとおりです。

error LNK2001: Nichtaufgeloestes externes Symbol "struct uTSystem ABC" (?ABC@@3UuTSystem@@A)

ヒントはありますか?ありがとうございました

4

2 に答える 2

1

すべての列名のスペルが正しいかどうかを確認してください。テーブルにパブリック シノニムがあるかどうかを確認します。

于 2010-11-10T19:10:34.840 に答える