Ho bisogno di aiuto per passare il mio parametro "tipo di tabella definito dall'utente" a sql dinamico, sp_executesql.Passare il parametro di tabella definito dall'utente a sql dinamico, sp_executesql
Ecco il mio codice di esempio:
DECLARE @str as nvarchar(Max)
DECLARE @IDLIST AS ListBigintType /* this is my table type, with ItemId column (bigint)*/
INSERT INTO @IDLIST
SELECT DISTINCT bigintid FROM tableWithBigInts WITH(NOLOCK)
set @str ='select * from SomeTable where ID in (select ItemId from @IdTable) '
EXEC sp_executesql @str , @ParamDefs, @IdTable = @IDLIST
Dice: Deve dichiarare la variabile di tabella "@IdTable"
non riesco a far funzionare tutto questo, e non può ottenere una soluzione con coalesce (per bigints) o perché il risultato sarà più di 8000 caratteri.
mi dispiace, ho dimenticato di scrivere che quando sto scrivendo la domanda qui. La query lo ha già. ma dà lo stesso errore. –
Aggiunto un esempio di lavoro. Controlla il livello di compatibilità per il tuo database, da 'select name, compatibility_level from sys.databases'? Dovrebbe essere impostato su 90 o successivo, per SQL Server 2005+. – Andomar
L'esempio che ho postato va bene per la mia installazione, quindi sono sicuro che puoi passare i parametri con valori di tabella usando 'sp_executesql' – Andomar