Hej alla glada... Försöker bygga en smart sökfunktion och behöver ha med order by (som kan vara olika värden i SP:n). Detta fungerar tyvärr inte heller : Testa att göra allt till en färdig sträng först genom att lägga det i en variabel. Varför skapar du en procedur dynamiskt? Det funkar att sitta på växelspaken och växla med r*ven också :) Kolla på Görans inlägg, och försök att bygga denna sträng i din klient istället. Proceduren, som den ser ut, blir ändå varken optimerad eller "säker" om man jämför med att köra det i klienten. Du har troligtvis större chanser att få dynamisk SQL att bli bra/rätt från en klient, när det är den typen av dynamik du vill åt.Problem med Order By i Lagrad procedur.
Detta fungerar fint tillsammans med mitt ASP-script... :
CREATE PROCEDURE dms.adv_search @param nvarchar(2000), @searchtext nvarchar(255) as
SELECT * FROM cmdFiles WHERE CHARINDEX(',' + CAST(folderid AS VARCHAR) + ',', ',' + @param + ',') > 0 AND filename like '%' + @searchtext + '%' ORDER BY filename
GO
Detta fungerar tyvärr inte, den klagar på något med att man inte kan skicka in värden i Order By :
CREATE PROCEDURE dms.adv_search @param nvarchar(2000), @searchtext nvarchar(255), @sortering nvarchar(255) as
SELECT * FROM cmdFiles WHERE CHARINDEX(',' + CAST(folderid AS VARCHAR) + ',', ',' + @param + ',') > 0 AND filename like '%' + @searchtext + '%' ORDER BY + @sortering
GO
Hlp plz!Sv: Problem med Order By i Lagrad procedur.
CREATE PROCEDURE dms.adv_search2 @param nvarchar(2000), @searchtext nvarchar(255), @searchtext2 nvarchar(255), @searchtype nvarchar(255) as
SELECT * FROM cmdFiles WHERE CHARINDEX(',' + CAST(folderid AS VARCHAR) + ',', ',' + @param + ',') > 0 AND (filename like '%' + @searchtext + '%' + @searchtype + filename like '%' + @searchtext2 + '%') ORDER BY filename
GO
Jag vill använda :
@searchtype
för att ha olika söktyper, tex AND, OR, NOTSv:Problem med Order By i Lagrad procedur.
CREATE PROCEDURE dms.adv_search2 @param nvarchar(2000), @searchtext nvarchar(255), @searchtext2 nvarchar(255), @searchtype nvarchar(255) as
Declare @SQL as VarChar(8000) --är max längden på sträng
Set @SQL = 'SELECT * FROM cmdFiles WHERE CHARINDEX(,' + CAST(folderid AS VARCHAR) + ',, ,' + @param + ',) > 0 AND (filename like %' + @searchtext + '%' + @searchtype + 'filename like %' + @searchtext2 + '%) ORDER BY filename'
Exec (@SQL)
GO
Vet inte om jag fick alla fnuttar på rätt ställe men principen är iallafall att du i strängen bygger en färdig SQL sats som om du skrev den för hand men dynamiskt med hjälp av variabler.
mvh
Göran LSv: Problem med Order By i Lagrad procedur.
Smartare att köra frågan direkt...
/mickeSv: Problem med Order By i Lagrad procedur.
(har inte testat, men det verkar inte så bra det heller...)
/mickeSv: Problem med Order By i Lagrad procedur.
Vill du ändå ha en proc, så bör Görans exempel funka ( har inte heller kollat fnuttarna )
/micke