![]() |
SQL-problem (T-SQL, SP, variabel)
Tjo!
Vi stötte på ett litet problem på jobbet när vi skulle skapa en ny SP i MSSQL 2008. Saken är att vi har en query i stil med: Kod:
SELECT stuff FROM table Kod:
CREATE PROCEDURE test Om det går; måste jag då skicka med ( och ) också? Tack på förhand :) Pelle |
Nja, det går nog inte, men kör dynamisk sql annars..
CREATE PROC Foo @stringpassed AS BEGIN DECLARE @SQL varchar(100) SET @SQL = 'SELECT * FROM table WHERE idno IN ' + @stringpassed EXEC(@SQL) END |
ändra till
WHERE thing = ANY(@things) och gör om @things till en array-variabel. |
Har du möjlighet att lägga upp innehållet i @Things till en tabell i SQL så får du ett smidigt sätt att hantera det internt i SPn:
Kod:
CREATE PROCEDURE test |
danjel: Funderade på det, men det är en rätt stor SP och kommer se grötigt ut :)
Bjorne: Fränt! Hur konverterar man en sträng till en array i t-sql? Conny: Som det ser ut nu kommer det bli nått i stil med det du föreslog. Kommer dock skapa en virtuell tabell isf :) |
kolla även denna, intressant..
http://www.4guysfromrolla.com/webtech/031004-1.shtml |
Följande sida listar ett par do's and don'ts. Den är absolut värd en plats bland ens bokmärken.
http://www.sommarskog.se/arrays-in-sql-2008.html |
Behändig funktion för listor
Denna funktion använder jag mig av ofta för att konvertera en kommaseparerad sträng till en table för att göra en insert med.
Kod:
create FUNCTION [dbo].[StringList_To_Table] (@list nvarchar(MAX)) Kod:
insert into table MyTable select String,Id from StringList_To_Table('hej,hopp,test') |
Alla tider är GMT +2. Klockan är nu 00:43. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson