Jag har ett problem i en sp. Jag har en kod som ser ut ungefär så här i början: Testa att lägga till din selectsats sist i @SQLString. Men jag behöver spara resultatet av selectsatsen i en variabel. Då kan jag inte ha den inne i @SQLString. OK. Du vill spara resultatet. Testa något sånt härUSE db
Declare @OtherDB sysname
Declare @SQLString NVARCHAR(100)
Declare @CurrentDB Nvarchar(100)
select @OtherDB = 'AndraDB'
SELECT @CurrentDB = db_name()
--Byter databas
SET @SQLString = N'USE ' + @OtherDB + ''
EXEC sp_executesql @SQLString
--SELECT Förnamn + ' ' + Efternamn FROM Personal WHERE...
--Byter tillbaka
SET @SQLString = N'USE ' + @CurrentDB + ''
EXEC sp_executesql @SQLString
Men problemet är att den byter inte databas så jag kan köra min select-sats (som nu är kommenterad). Men jag får inga fel på de raderna heller. Men om jag hårdkodar USE AndraDB så fungerar det. Men mitt problem är att det är en inparameter så jag måste kunna göra något sådant här. Någon som har några förslag?
Tack på förhand!Sv: USE db
Ex
SELECT @DBToUse = 'USE pubs '
SELECT @ExecStr = (@DBToUse + ' SELECT.....'
EXECUTE sp_executesql @ExecStr
Den nya "databaskontexten" gäller bara till ett execute-statement.
/JanSv:USE db
Sv: USE db
DECLARE @Namnet NVARCHAR(100)
DECLARE @DBToUse Nvarchar(100)
DECLARE @ExecStr Nvarchar(100)
SET @DBToUse = 'USE pubs '
SET @ExecStr = @DBToUse + N'SELECT @Namn=' + N'(SELECT au_lname from authors WHERE au_id=(''409-56-7008''))'
EXECUTE sp_executesql @ExecStr, N'@Namn NVARCHAR(100) output', @Namn=@Namnet output
SELECT @Namnet
Hoppas det var det du var ute efter.
/Jan