Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di t30n3
    Registrato dal
    Jun 2005
    Messaggi
    111

    Catturare errori Stored Procedure

    Ciao a tutti,
    ho un problema nel catturare gli errori di esecuzione di una stored procedure. Questo è il mio codice:
    codice:
    strsql = "declare @error as int "
    strsql = strsql & "EXEC @error = p_ins_wdm_doc @Wdm_doc_type_id = " & recuperotipo & ", "
    strsql = strsql & "@Wdm_doc_title = '" & Wdm_doc_title & "', "
    strsql = strsql & "@Wdm_doc_abstract = '" & Wdm_doc_abstract & "',"
    strsql = strsql & "@Wdm_doc_owner = '" & wdm_doc_owner & "', "
    strsql = strsql & "@Wdm_doc_cr_user_id = '" & wdm_doc_cr_user_id & "', "
    strsql = strsql & "@Wdm_doc_cr_date = '" & Wdm_doc_cr_date &"', "
    strsql = strsql & "@errore = ''"
    	        
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open strConn2
    Set objRs = Server.CreateObject("ADODB.Recordset")
    set objRs = objConn.Execute(strsql)
    errore = objRs("@error")
    response.Write(errore)
    Non riesco a far stampare il valore di @error, mentre se eseguo la stored procedure tramite sql server non mi da alcun problema... forse sbaglio qualcosa nella procedura in sè, non lo so... eccola x essere più chiari:

    codice:
    CREATE PROCEDURE [dbo].[p_ins_wdm_doc]
    (@Wdm_doc_type_id int = '', @Wdm_doc_title nvarchar(1000) = '',
    @Wdm_doc_abstract nvarchar(1000) = '', @Wdm_doc_owner nvarchar(100) ='',
    @Wdm_doc_cr_user_id nvarchar(50) ='', @Wdm_doc_cr_date datetime ='',
    @errore int OUTPUT)
    AS
    INSERT INTO wdm_doc
    (Wdm_doc_type_id, Wdm_doc_title, Wdm_doc_abstract, Wdm_doc_owner,
    Wdm_doc_cr_user_id, Wdm_doc_cr_date)
    VALUES
    (@Wdm_doc_type_id, @Wdm_doc_title, @Wdm_doc_abstract, @Wdm_doc_owner,
    @Wdm_doc_cr_user_id, @Wdm_doc_cr_date);
    
    SELECT @errore = @@ERROR;
    if @errore <> 0
    print @errore
    else
    print 'Inserimento effettuato con successo'
    Ottengo sempre questo errore:

    ADODB.Recordset error '800a0cc1'
    Item cannot be found in the collection corresponding to the requested name or ordinal.
    /servizi/privati/documenti/docins2.asp, line 208

    che mi porta qui: errore = objRs("@error")
    Quello che mi dà fastidio inoltre è che l'inserimento viene effettuato veramente....
    Grazie dell'attenzione e dell'aiuto...

  2. #2
    se vuoi un recordset di ritorno devi fare una SELECT, e non solo una EXEC. prova ad aggiungere in fondo alla SP l'istruzione
    SELECT @error

  3. #3
    Utente di HTML.it L'avatar di t30n3
    Registrato dal
    Jun 2005
    Messaggi
    111
    Originariamente inviato da optime
    se vuoi un recordset di ritorno devi fare una SELECT, e non solo una EXEC. prova ad aggiungere in fondo alla SP l'istruzione
    SELECT @error
    la select c'è già... però non mi funziona lo stesso...

  4. #4
    Utente di HTML.it L'avatar di t30n3
    Registrato dal
    Jun 2005
    Messaggi
    111
    ho cambiato la sp in questo modo:

    codice:
    CREATE PROCEDURE [dbo].[p_ins_wdm_doc]
    (@Wdm_doc_type_id int = '', @Wdm_doc_title nvarchar(1000) = '',
    @Wdm_doc_abstract nvarchar(1000) = '', @Wdm_doc_owner nvarchar(100) ='',
    @Wdm_doc_cr_user_id nvarchar(50) ='', @Wdm_doc_cr_date datetime ='',
    @error int OUTPUT)
    AS
    BEGIN
    	SET NOCOUNT ON
    	INSERT INTO wdm_doc
    	(Wdm_doc_type_id, Wdm_doc_title, Wdm_doc_abstract, Wdm_doc_owner,
    	Wdm_doc_cr_user_id, Wdm_doc_cr_date)
    	VALUES
    	(@Wdm_doc_type_id, @Wdm_doc_title, @Wdm_doc_abstract, @Wdm_doc_owner,
    	@Wdm_doc_cr_user_id, @Wdm_doc_cr_date);
    	
    	SELECT @error = @@ERROR;
    END
    ora ho questo errore:

    ADODB.Recordset error '800a0e78'
    Operation is not allowed when the object is closed.
    /servizi/privati/documenti/docins2.asp, line 208

    nella pagina asp invece ho aggiunto questo parte:

    codice:
    set objRs = objConn.Execute(strsql)
    if not objRs.BOF and not objRs.EOF then
    errore = objRs("@error")
    response.Write(errore)
    end if
    e l'errore si riferisce alla riga: if not objRs.BOF and not objRs.EOF then

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.