Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Create Trigger da pagina ASP

    un saluto a tutti....

    ho la necessità di creare un trigger su oracle da pagina asp.

    Secondo voi è possibile ?



    create or replace
    TRIGGER TriggerGIACENZE
    AFTER INSERT
    ON TB_TRANS_ARTICLES
    FOR EACH ROW

    DECLARE
    ART TB_POS_GIACENZE%ROWTYPE;

    BEGIN

    SELECT * INTO ART
    FROM TB_POS_GIACENZE
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID;
    IF :NEW.DELETE_OPERATOR_ID IS NULL THEN
    UPDATE TB_POS_GIACENZE
    SET QTA = QTA + :NEW.QTY_WEIGHT,
    PRICE = PRICE + :NEW.PRICE
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID;
    END IF;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    IF :NEW.DELETE_OPERATOR_ID IS NULL THEN
    INSERT INTO TB_POS_GIACENZE ( ARTICLE_ID, CASHREG_ID, QTA, PRICE )
    VALUES ( :NEW.ARTICLE_ID, :NEW.POS_ID, :NEW.QTY_WEIGHT, :NEW.PRICE );
    END IF;
    END;
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Fattibile se ti colleghi con un utenza di admin

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da DarioN1
    Fattibile se ti colleghi con un utenza di admin
    Oppure se il tuo utente ha le grant anche di DBA (che poi è più o meno la stessa cosa che ha scritto DarioN1

  4. #4
    scusate ragazzi ma sono stato lontano dal pc ....

    ma come faccio da pagina asp a collegarmi in admin ?
    Pippo Giacalone
    giacalone@tin.it

  5. #5
    Nella connectionstring tu definisci l'utenza con cui ti colleghi...

    Quell'utenza deve essere amministratrice

  6. #6
    Grazie Dario,

    se ho capito bene, io su oracle entro con l'utente pippo mentre devo collegarmi con l'utente system ?


    e poi ...

    basterà inserire quello script dentro i marcatori <% %> e lanciare la pagina asp ?
    Pippo Giacalone
    giacalone@tin.it

  7. #7
    Pippo Giacalone
    giacalone@tin.it

  8. #8
    Dalla pagina (quindi dentro <% %>) crei la connessione al DB usando nome utente e password da amministratore e poi alla connessione fai eseguire la tua stringa SQL. Al termine chiudi la connessione...
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  9. #9
    Allora .....

    ho prima provato così:

    <%
    '///////////////////////////////////////////////////////////////////////////////////
    'connection string

    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "Provider=msdaora; Data Source=DataBase; User Id=system ; Password=morpheus ;"



    create or replace
    TRIGGER TriggerGIACENZE
    AFTER INSERT
    ON TB_TRANS_ARTICLES
    FOR EACH ROW

    DECLARE
    ART TB_POS_GIACENZE%ROWTYPE;

    BEGIN

    SELECT * INTO ART
    FROM TB_POS_GIACENZE
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID;
    IF :NEW.DELETE_OPERATOR_ID IS NULL THEN
    UPDATE TB_POS_GIACENZE
    SET QTA = QTA + :NEW.QTY_WEIGHT,
    PRICE = PRICE + :NEW.PRICE
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID;
    END IF;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    IF :NEW.DELETE_OPERATOR_ID IS NULL THEN
    INSERT INTO TB_POS_GIACENZE ( ARTICLE_ID, CASHREG_ID, QTA, PRICE )
    VALUES ( :NEW.ARTICLE_ID, :NEW.POS_ID, :NEW.QTY_WEIGHT, :NEW.PRICE );
    END IF;
    END;
    Conn.execute(Sql)
    %>



    e mi viene (giustamente) fuori questo errore:

    Microsoft VBScript compilation error '800a0409'
    Unterminated string constant
    CreateTrigger2.asp, line 13
    Sql = " create or replace
    ------------------------------^



    ho provato in quest'altro modo:

    <%
    '///////////////////////////////////////////////////////////////////////////////////
    'connection string

    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "Provider=msdaora; Data Source=DataBase; User Id=system ; Password=morpheus ;"

    Sql = " create or replace " &_
    "TRIGGER TriggerGIACENZE " &_
    "AFTER INSERT " &_
    " ON TB_TRANS_ARTICLES " &_
    " FOR EACH ROW " &_
    "DECLARE " &_
    " ART TB_POS_GIACENZE%ROWTYPE; " &_
    "BEGIN " &_
    " SELECT * INTO ART " &_
    " FROM TB_POS_GIACENZE " &_
    " WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID; " &_
    " IF :NEW.DELETE_OPERATOR_ID IS NULL THEN " &_
    " UPDATE TB_POS_GIACENZE " &_
    " SET QTA = QTA + :NEW.QTY_WEIGHT, " &_
    " PRICE = PRICE + :NEW.PRICE " &_
    " WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID; " &_
    " END IF; " &_
    "EXCEPTION " &_
    " WHEN NO_DATA_FOUND THEN " &_
    " IF :NEW.DELETE_OPERATOR_ID IS NULL THEN " &_
    " INSERT INTO TB_POS_GIACENZE ( ARTICLE_ID, CASHREG_ID, QTA, PRICE ) " &_
    " VALUES ( :NEW.ARTICLE_ID, :NEW.POS_ID, :NEW.QTY_WEIGHT, :NEW.PRICE ); " &_
    " END IF; " &_
    "END;"
    Conn.execute(Sql)


    %>

    e mi da questo errore:


    Microsoft OLE DB Provider for Oracle error '80040e37'
    ORA-00942: table or view does not exist
    CreateTrigger.asp, line 37


    ma le tabelle esistono !!

    l'unica stringa che potrebbe secondo me dare errore è questa:
    TB_POS_GIACENZE%ROWTYPE

    mi sapete aiutare ?
    Pippo Giacalone
    giacalone@tin.it

  10. #10
    grazie a tutti ho risolto ...

    sbagliavo a collegarmi con utenza system .... dovevo collegarmi con utente pippo e poi lanciare:

    <%
    '///////////////////////////////////////////////////////////////////////////////////
    'connection string

    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "Provider=msdaora; Data Source=DataBase; User Id=pippo ; Password=matrix ;"

    Sql = " create or replace " &_
    "TRIGGER TriggerGIACENZE " &_
    "AFTER INSERT " &_
    " ON TB_TRANS_ARTICLES " &_
    " FOR EACH ROW " &_
    "DECLARE " &_
    " ART TB_POS_GIACENZE%ROWTYPE; " &_
    "BEGIN " &_
    " SELECT * INTO ART " &_
    " FROM TB_POS_GIACENZE " &_
    " WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID; " &_
    " IF :NEW.DELETE_OPERATOR_ID IS NULL THEN " &_
    " UPDATE TB_POS_GIACENZE " &_
    " SET QTA = QTA + :NEW.QTY_WEIGHT, " &_
    " PRICE = PRICE + :NEW.PRICE " &_
    " WHERE ARTICLE_ID = :NEW.ARTICLE_ID AND CASHREG_ID = :NEW.POS_ID; " &_
    " END IF; " &_
    "EXCEPTION " &_
    " WHEN NO_DATA_FOUND THEN " &_
    " IF :NEW.DELETE_OPERATOR_ID IS NULL THEN " &_
    " INSERT INTO TB_POS_GIACENZE ( ARTICLE_ID, CASHREG_ID, QTA, PRICE ) " &_
    " VALUES ( :NEW.ARTICLE_ID, :NEW.POS_ID, :NEW.QTY_WEIGHT, :NEW.PRICE ); " &_
    " END IF; " &_
    "END;"
    Conn.execute(Sql)


    %>
    Pippo Giacalone
    giacalone@tin.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.