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

    Stored Procedure, Viste, SQL e ASP

    Salve,
    mi sa che mi sto un po' incasinando magari qualcuno può farmi un po' di chiarezza.
    In principio facevo delle query sul db Access scrivendo la query nello scripting di ASP.
    Poi ho cominciato ad usare le stored queries e passare i parametri alla conn.execute("exec nome_query parametro").
    Ma vedendo i limiti di creare stored queries in Access ho provato a spostare il ragionamento in SQL Server ma mi sono arenato.
    Magari con un esempio semplice potrei capire se qualcuno mi aiuta.
    Ad esempio queste tabelle:
    t_libri (id, id_autore, titolo)
    t_autori(id, nome, cognome)
    io vorrei creare una vista pronta a cui poter passare solo il parametro dell'id_autore

    La query (qry_test) preformata la immaginavo tipo:
    SELECT t_libri.titolo, t_autore FROM t_libri INNER JOIN t_autori ON t_libri.id_autore = t_autore.id WHERE t_autori.id = [parametro]

    Da ASP ogni volta che chiamo la vista qry_test passando il parametro mi aspetto un recordset con i titoli ed il nome dell'autore.

    Per cui per gradi mi sono perso:

    1) come scrivere la query (o vista o non so come chiamarla) parametrizzata su SQL
    2) come passare il parametro da ASP (credo che sia così:
    codice:
    conn.execute("exec nome_query parametro")
    giusto?)
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    in SQL si chiamano Stored Procedures (che è il termine corretto, le Stored Queries di Access sono solo un succedaneo), per gli amici SP. Per passare i parametri devi usare i Parameters di ADO.

    qui un inizio http://www.asp101.com/samples/storedprocs.asp

  3. #3
    Grandioso, ora è tutto molto più chiaro.
    Mi trovo in difficoltà solo su una cosa:
    codice:
    Create Procedure qryTasksAperti
        (
            @IDUtente int,
            @Livello varchar(50)
        )
    As
    SELECT
    [...]
    FROM 
    [...]
    WHERE 
    tblTasks.Stato = 1 
    AND tblTasks.Inizio <= GETDATE()
    AND (tblUtentiTasks.Livello IN (@Livello) OR @Livello IS NULL)
    La variabile @Livello l'ho messa varchar(50) anche se il campo Livello è un int. Proprio perchè all'ultima riga ho messo "IN" invece che "=".
    Effettivamente a volte ho la necessita di passare il parametro
    @Livello = 0 -> Mi dà solo quelli con valore = 0
    @Livello = 1 -> Mi dà solo quelli con valore = 1
    @Livello = 2 -> Mi dà solo quelli con valore = 2
    @Livello = NULL -> Mi dà tutti i record

    Ma se mi servisse cercare i recordo con valore Livello IN (1, 2) come si fa?
    Per questo motivo avevo provato a mettere @Livello come varchar(50) ma se quando da ASP chiamo la procedure ed imposto come valore del parametro @Livello "1, 2" ad esempio mi va in errore.
    Come si procede in questo caso?
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  4. #4

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.