[ M E N E @ 15.04.2008. 16:08 ] @
Kako da mi c# preda kao parametar niz?
(za moju stored proceduru)

u pitanju su stringovi, ako to nesto znaci (ali hteo bih generalniji odgovor, da znam kako se to inace radi)

hvala
[ Fedya @ 15.04.2008. 16:12 ] @
Niz kao tip podatka ne mozes proslediti. Posto su u pitanju stringovi mozes ih razdvojiti nekim specijalnim znakom i parsirati u proceduri.
[ Djoks @ 15.04.2008. 16:27 ] @
http://www.codeproject.com/KB/database/PassingArraysIntoSPs.aspx
[ deerbeer @ 16.04.2008. 13:00 ] @
A sto ne bi koristio http://msdn2.microsoft.com/en-...ta.sqlclient.sqlparameter.aspx
Pretrazi .NET forum bilo je dosta price o tome i primera

Meni ovo deluje malo kao egzibicija :) ..al iskren da budem nisam probao
[ Zidar @ 16.04.2008. 14:06 ] @
Fedya ti je dao odgovor "Niz kao tip podatka ne mozes proslediti. Posto su u pitanju stringovi mozes ih razdvojiti nekim specijalnim znakom i parsirati u proceduri."

Konstruisi string koji izgleda ovako nekako "a,b,c,d,e" - elemenit niza su a b c d e. Stavis ih u string tako sto dodas zareze izmedju njih.
Na server strani treba ti procedura koja taj string razbije na element i onda radis s njima sta hoces. Bilo je i na ovom forumu price o tome kako se razbija string na elemente koristeci Transact SQL. Ako te interesuje, mozda mozemo da pomognemo oko SQL dela. Onda tvoj kod ne mora da se petlja s time, to uradi procedura na SQL serveru.
[ adopilot @ 21.04.2008. 12:36 ] @
Kada uspiješ proslijditi niz kao sting "a,b,c,d,e"

Onda u Stored proceduri možeš probati korititi UDF "funkciju"
Meni je pošlo za rukom uz pomoć jedne ovakve:

Ovo je kriranje funkcije
Code:

CREATE FUNCTION [dbo].[fn_ado_param] (@ado nvarchar(4000), @Delim char(1)= ',')
RETURNS @VALUES TABLE (ado nvarchar(4000))AS
   BEGIN
   DECLARE @chrind INT
   DECLARE @Piece nvarchar(4000)
   SELECT @chrind = 1
   WHILE @chrind > 0
      BEGIN
         SELECT @chrind = CHARINDEX(@Delim,@ado)
         IF @chrind > 0
            SELECT @Piece = LEFT(@ado,@chrind - 1)
         ELSE
            SELECT @Piece = @ado
         INSERT @VALUES(ado) VALUES(@Piece)
         SELECT @ado = RIGHT(@ado,LEN(@ado) - @chrind)
         IF LEN(@ado) = 0 BREAK
      END
   RETURN
END


A ovo je pozivanje UDFa u stored proceduri
Code:

select ...
from ...
where 
uslov in (SELECT ado FROM fn_ado_param (@grupa_lista,','))