Welcome to Sign in | Help
in Search

Numar variabil de parametrii

Last post 07-07-2009, 2:16 PM by tebbaerty. 5 replies.
Sort Posts: Previous Next
  •  06-25-2009, 2:29 PM 7347

    Numar variabil de parametrii

    Salut,

    Am urmatoarea situatie,

    folosesc sql 2005.

    Doresc sa  scriu o procedura ce accepta un numar variabil de parametrii. Pot face asta ? (nu vreau sa folosesc xml)

    Ideea este ca procedura exista si este apelata in foarte multe locuri (unele le stiu unele nu le stiu)

    eu doresc sa modific procedura astfel incat daca ea primeste un parametru in plus sa faca altceva.


    de ex:

    DisplayLog
    face display la log

    DisplayLog @Date

    face display la log pentru data trimisa ca parametru.


    Ceva de genu.

    Are cineva idee daca se poate asa ceva in sql ? sau daca vreua sa trimit un nr variabil de parametrii pot folosi doar xml :(....

    Tot ce gasesc pe net este prin folosirea xml in care sunt pusi parametrii dar cum procedura mea exista si este deja folosita in multe locuri
    nu am cum sa mai fac asta .

    Multumesc anticipat,
  •  06-25-2009, 2:51 PM 7348 in reply to 7347

    Re: Numar variabil de parametrii

    Problema rezolvata,

    Pentru cei interesati :

    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tabel Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman","serif";}

    declare @t int

    select @t = 6


    select *

    from Partner

    where PartnerId = isnull(@t, PartnerId)

     

    daca @t este null atunci se va face tot selectul, altfel se va selecta doar ceea ce ne trebuie.


    if exists (select 1 from sys.procedures where name = 'uspTest')

          drop procedure uspTest

     

    go


    se declara procedura care daca are parametru atunci il pune pe cel care il primeste si daca nu primeste pune null,
    Oriunde se foloseste parametru se pune cu isnull ca mai sus si se pune o valoare default in cazul in care e null.


    create procedure uspTest @var1 int = null, @var2 int = null

    as

    select @var1, @var2

     

    go

     

    exec uspTest 5

     

    exec uspTest 5, null



    Sper sa ajute si pe altcineva.multumesc

  •  06-25-2009, 2:54 PM 7350 in reply to 7348

    Re: Numar variabil de parametrii

    Nu cred ca poti in sql 2005 s afaci asa ceva fara xml. In sql 2008 poti apela proceduri care au ca parametri Tabele,lucru asta facandu-se cu dataseturi transmise ,folosind ado.net 3.5 Deci in concluzie daca ai avea sql 2008 ai putea face chestia asta punand parametri intr-un datatable apoi acel datatable intr-un dataset pe care-l transmiti procedurii tale via ado.net
    Secolul XXI ori va fi religios ori nu va fi deloc
  •  06-26-2009, 3:05 PM 7354 in reply to 7350

    Re: Numar variabil de parametrii

    Vezi daca te ajuta si
    http://www.sommarskog.se/dyn-search-2005.html
  •  06-27-2009, 1:44 AM 7355 in reply to 7348

    Re: Numar variabil de parametrii

    tebbaerty:


    create procedure uspTest @var1 int = null, @var2 int = null

    as

    select @var1, @var2

     

    go

     

    exec uspTest 5

     

    exec uspTest 5, null


    De ce nu foloseşti "named parameters" pentru apelarea procedurii (simplifici apelul) ?
    Ex:
    exec uspTest @var1 = 5

    exec uspTest @var2 = 6

    exec uspTest @var2 = 6, @var1 = 5

  •  07-07-2009, 2:16 PM 7370 in reply to 7355

    Re: Numar variabil de parametrii

    Salut,

    nu vad care e diferenta intre ele,

    eu:
    exec uspTest 5, null

    tu:
    exec uspTest @var2 = 6, @var1 = 5

    doar pui numele parametrului in fata .

    merge in ambele variante :D

    Multumesc
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems