Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di lelenet
    Registrato dal
    Feb 2002
    Messaggi
    207

    errore stored procedure

    Buongiorno,

    ho creato una stroed procedure che con query analizer funziona bene ma quando la richiamo da una pagina ASP mi dà questo errore:

    Microsoft OLE DB Provider for SQL Server error '80040e07'

    Syntax error converting the varchar value ' 1 1' to a column of data type int.

    avete dei suggerimenti???

  2. #2
    un attimo che accendo la sfera di cristallo... ci vorrà un po', sai va a carbonella... appena sarà calda potrò vedere la tua SP da lontano...

  3. #3
    Utente di HTML.it L'avatar di lelenet
    Registrato dal
    Feb 2002
    Messaggi
    207
    ecco la SP:

    ALTER PROCEDURE sp_LeggiAlbero
    @lingua CHAR(2)
    AS
    /* crea l'albero ordinato della gerarchia del sito */
    /* i dati servono a popolare il treeview della gestione contenuti */

    /* impedisce la restituzione del numero di record aggiornati */

    SET NOCOUNT ON

    IF EXISTS(SELECT name
    FROM sysobjects
    WHERE name = N'tree'
    AND type = 'U')
    DROP TABLE tree
    /* creo una tabella temporanea */
    CREATE TABLE tree (
    nomeCartella NVARCHAR(50) NULL,
    sospesa BIT NULL,
    fk_padre INT NULL,
    pk_cartella INT NULL,
    titolo NVARCHAR(255) NULL,
    fkCartellaDoc INT NULL,
    sospeso BIT NULL,
    wizard BIT NULL,
    nomedoc VARCHAR(255) NULL,
    pk_documento INT NULL,
    ordine INT NULL,
    sequenza VARCHAR(100) NULL
    )

    /* carico tutte le pagine del sito */
    /* il campo sequenza contiene il codice della cartella di appartenenza e la posizione nell'ambito della cartella stessa */
    /* NB: le pagine default* hanno il codice della cartella padre in quanto risiedono logicamente in quella cartella */
    INSERT INTO tree
    SELECT tbl_cartelle.nome AS nomecartella, tbl_cartelle.sospesa, tbl_cartelle.fk_padre, tbl_cartelle.pk_cartella, tbl_documenti.titolo,
    tbl_documenti.fk_cartella AS fkCartellaDoc, tbl_documenti.sospeso, tbl_documenti.wizard, tbl_documenti.nome AS nomedoc,
    tbl_documenti.pk_documento, tbl_documenti.ordine, CASE LOWER(LEFT(tbl_documenti.nome, 8))
    WHEN 'default_' THEN STR(ISNULL(tbl_cartelle.fk_padre, 0), 5) + STR(ordine, 2) ELSE STR(tbl_cartelle.pk_cartella, 5) + STR(ordine, 2)
    END AS sequenza
    FROM tbl_cartelle LEFT OUTER JOIN
    tbl_documenti ON tbl_cartelle.pk_cartella = tbl_documenti.fk_cartella
    WHERE (tbl_documenti.nome LIKE '%' + @lingua + '.asp')


    DECLARE @sequenza VARCHAR(100)
    DECLARE @pk_cartella INT
    DECLARE @pk_documento INT
    DECLARE @ordine INT
    DECLARE tree_cursor CURSOR FOR
    SELECT sequenza, pk_documento FROM tree

    /* leggo tutte le pagine in ordine di inserimento*/
    OPEN tree_cursor
    FETCH NEXT FROM tree_cursor INTO @sequenza, @pk_documento
    /* leggo il codice della cartella di appartenenza e la posizione */
    SET @pk_cartella = CONVERT(INT, LEFT(@sequenza, 5))
    /* elimino il codice */
    SET @sequenza = RIGHT(@sequenza, 2)
    /* l'ordinamento viene ottenuto creando un campo sequenza che contiene i valori di posizione (campo "ordine") */
    /* della pagina considerata più tutte le pagine default delle cartelle di livello supeiore fino alla radice */
    WHILE @@FETCH_STATUS = 0
    BEGIN
    WHILE 1 = 1
    BEGIN
    /* se il codice è a 0 ho finito la navigazione nell'albero e termino il loop*/
    IF @pk_cartella = 0
    BREAK
    ELSE
    BEGIN
    /* leggo la posizione della pagina di default del livello superiore */
    SET @ordine = (SELECT ordine FROM tbl_documenti WHERE fk_cartella = @pk_cartella AND nome = 'default' + @lingua + '.asp')
    /* aggiungo la posizione al campo sequenza che determinèrà automaticamente l'ordinamento del treeview */
    SET @sequenza = STR(@ordine, 2, 0) + @sequenza
    /* passo alla cartella di livello superiore */
    SET @pk_cartella = (SELECT ISNULL(fk_padre, 0) FROM tbl_cartelle WHERE pk_cartella = @pk_cartella)
    END
    PRINT @ordine
    END
    /* aggiorno il campo sequenza nella tabella temporanea */
    UPDATE tree SET sequenza = @sequenza WHERE pk_documento = @pk_documento
    FETCH NEXT FROM tree_cursor INTO @sequenza, @pk_documento
    /* controllo il fine tabella */
    IF @@FETCH_STATUS <> 0
    BREAK
    SET @pk_cartella = CONVERT(INT, LEFT(@sequenza, 5))
    SET @sequenza = RIGHT(@sequenza, 2)
    END
    CLOSE tree_cursor
    DEALLOCATE tree_cursor



    /* restituisco l'elenco ordinato */
    SELECT * FROM tree ORDER BY sequenza

    SET NOCOUNT OF

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 © 2026 vBulletin Solutions, Inc. All rights reserved.