Che restituisce?codice:conn.state: <%= conn.state %> rs.state: <%= rs.state %> response.write conn.state &" " response.write rs.state &" "
Che restituisce?codice:conn.state: <%= conn.state %> rs.state: <%= rs.state %> response.write conn.state &" " response.write rs.state &" "
A S P : tutto il resto è noia...
L I N U X : forse mi "converto"...
Restituisce questo
conn.state: 1
rs.state: 0
Più PILU per tutti!!
Non si apre il recordset... :master:
A S P : tutto il resto è noia...
L I N U X : forse mi "converto"...
appunto... non capisco...
sbaglio qualcosa?
secondo me l'errore è nella store procedure
Più PILU per tutti!!
Ho fatto un ulteriore test
Ho creato una nuova store procedure
Così invece la richiamo da aspcodice:CREATE PROCEDURE sp_Test AS BEGIN -- Ritorna la select della tabella temporanea Select * From myTabella; END
La store procedure mi ritorna un recorset che riesco a ciclare e visualizzare.codice:<% Set Conn = server.CreateObject("ADODB.Connection") conn.connectionstring = connectionstring conn.open Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = conn cmd.CommandText = "sp_Test" cmd.CommandType = adCmdStoredProc set rs = cmd.execute() %> conn.state: <%= conn.state %> rs.state: <%= rs.state %> <% do while not rs.EOF %> <%= rs("ID") %> - <% rs.MoveNext %> <% loop %> <% set rs = nothing %> <% set cmd = nothing %> <% set conn = nothing %>
Poi all'interno della store procedure ho provato a fare delle modifiche aggiungendo prima della SELECT delle INSERT
Cioè:Ora quando da codice asp incomincia a ciclare il recordset, che in teoria la store procedure dovrebbe ritornare, ottengo un errore (L'operazione non è consentita se l'oggetto è chiuso.)codice:CREATE PROCEDURE sp_Test AS BEGIN INSERT INTO myTabella VALUES ('valore1', 'valore2') INSERT INTO myTabella VALUES ('valoreA', 'valoreB') INSERT INTO myTabella VALUES ('valoreX', 'valoreZ') -- Ritorna la select della tabella temporanea Select * From myTabella; END
Infatti ottengo che
conn.state= 1
ma....
rs.state= 0
Per cui il problema sono le INSERT aggiunte nella store procedure...
CHE FARE? E' NORMALE???![]()
Più PILU per tutti!!
Scusa non puoi cambiare metodo, visto che così dà problemi?
Cosa devi fare?
A S P : tutto il resto è noia...
L I N U X : forse mi "converto"...
In che senso?
La store procedure che ho realizzato mi permette in base a dei parametri di ricerca di elencare insieme di prezzi ordinati giornalmente.
Ovviamente quello che fa la store procedure potrei farlo via asp, ma avrei certamente un decadimento delle prestazioni.
La procedura presi in input la data di inizio, la data fine, il tipo di camera, il numero di posti e l'hotel di riferimento
inzia un ciclo che giorno per giorno dalla data di inizio alla data fine:
fa un confronto se le prenotazioni della camera di quel giorno non superino quelle richieste
in caso affermativo controlla il prezzo più basso per quella camera
inseririsce il prezzo così trovato nella tabella temporanea che mi sono creato
e (in teoria) dovrebbe ritornarmi la tabella temporanea popolata (in caso di esito positivo della ricerca) dei prezzi trovati, in ogni riga della tabella ho un giorno con la lista dei suoi prezzi.
Esempio:
Data Da = '26/11/2005'
Data A = '28/11/2005'
TipoCamera = 1
Hotel = 1045
Posti = 1
exec GetBestPrice '26/11/2005', '28/11/2005', 1, 1045, 1
Mi ritorna correttamente (con il query analizer):
Questo e quello che via asp mi aspetterei come ritorno...codice:ID Data ImportoFB ImportoHB ImportoBB -- ----------------------- --------- --------- --------- 0 2005-11-26 12:06:02.593 300.0000 200.0000 50.0000 1 2005-11-27 12:06:02.593 300.0000 200.0000 50.0000 2 2005-11-28 12:06:02.593 300.0000 200.0000 50.0000![]()
Solo che non torna un cazzo!
Scusate la parolaccia! Ma la cosa mi sta facendo impazzire.
Credo fortemente che la store procedure sia la via giusta per avere il risultato che mi occorre, pensate a un ciclo in asp che parte dalla data X alla data X+n giorni, fatto giorno per giorno, che fa 4 o 5 chiamate al db per:
- creare una tabella temporanea
- fare la prima select per controllare la disponibilità
- una seconda select per per determinare il prezzo migliore
- una insert nel caso che venga trovato il prezzo
- una terza select per elencare il dettaglio dei prezzi
- in fine un drop della tabella temporanea
Insomma se esistono delle store procedure perchè non utilizzarle?
BOH?!?!
Più PILU per tutti!!
hai messo SET NOCOUNT ON ?