>Qualcuno mi sa dire il perchè?!?!?
Ciao Adriano,
Benvenuto sui forum di DNH!
Come documentato sui Books Online, il valore di ritorno della sp_executesql è 0 se l'esecuzione è avvenuta con successo oppure 1 se si è verificato un errore.
Per recuperare il numero di righe restituite dalla query dovresti definire un parametro di OUTPUT.
Ad ogni modo ti fermo subito perché la tecnica proposta non è consigliabile in quanto utilizzando il Dynamic SQL perderesti tutti i vantaggi prestazionali offerti dalle stored procedures oltre che a spalancare la porta ad attacchi di SQL Injection.
Soluzioni? Beh, prima di tutto bisognerebbe capire perché ti interessa conoscere il numero di righe delle tabelle
Se ti accontenti di recuperare un valore che con SQL Server 2000 potrebbe non essere accurato, puoi interrogare la tabella di sistema sysindexes:
SELECT OBJECT_NAME(id), rows
FROM sysindexes
WHERE indid < 2;
Questa query recupera il nome delle tabelle ed il relativo numero di righe delle tabelle prive di indici clustered (heap, indid = 0) e degli indici clustered (indid = 1) che come saprai il loro livello foglia coincide con le data pages della tabella originaria:
http://msdn.microsoft.com/en-us/library/ms188270.aspx
http://msdn.microsoft.com/en-us/library/ms177443.aspx
Il body della tua stored procedure potrà essere sostituito dalla seguente query:
SELECT rows
FROM sysindexes
WHERE id = OBJECT_ID(@TableName)
AND indid < 2;
>Grazie molte!!!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org