Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

SQL server 2000 - parametrizovan SQL query za DTS

  • 5 odgovora
  • 3.135 pregleda

Najnovija ↓

SQL server 2000 - parametrizovan SQL query za DTS 28.09.2004. u 19:50 · pre 268 meseci #1
Pozdrav svima,

pokusavam da napravim paket za prebacivanje podataka iz SQL server baze u FoxPro bazu. Podaci koji se prebacuju zavise od spoljasnjeg parametra. Kada SELECT upit koji prebacuje podatke (koristim Transform Data Task) napisem sa fiksnim vrednostima radi, a kada stavim da gleda parametar, javlja mi sintax error.

Upit koji radi:

select productID, office_name, office_infoID, officeID, serviceID, currID,
bankID, bank_name, branch_name, branch_infoID, branchID, rtrim(left(c.corr_name,25))+'('+cast(c.priority as varchar)+')' as corr_name, p.corrID as corrID, countryID, cityID, p.status as status, p.folio_type as folio_type
from dbo.v_Product_POS p LEFT OUTER JOIN dba.Correspondent c on p.corrID=c.corrID
where p.status=1
and ((select new_pp from oper.Agent where Acode='M0001')*p.officeID>=0
or (select new_pp from oper.Agent where Acode='M0001')*p.branchID>=0)

order by productID desc

Upit koji ne radi:

select productID, office_name, office_infoID, officeID, serviceID, currID,
bankID, bank_name, branch_name, branch_infoID, branchID, rtrim(left(c.corr_name,25))+'('+cast(c.priority as varchar)+')' as corr_name, p.corrID as corrID, countryID, cityID, p.status as status, p.folio_type as folio_type
from dbo.v_Product_POS p LEFT OUTER JOIN dba.Correspondent c on p.corrID=c.corrID
where p.status=1
and ((select new_pp from oper.Agent where Acode=?)*p.officeID>=0
or (select new_pp from oper.Agent where Acode=?)*p.branchID>=0)

order by productID desc

Imam globalni parametar Acode definisan za paket.

U cemu je problem? Da li ovi upiti za DTS ne podrzavaju ugnjezdene upite?

Unapred zahvalna :)
Re: SQL server 2000 - parametrizovan SQL query za DTS 29.09.2004. u 16:37 · pre 268 meseci #3
Ne radi :(

Probala sam vec ranije bila da ostavim samo jedan upitnik (pomislivsi da je problem taj koji si naveo), a da drugi zamenim stringom, ali nece da radi. Javlja mi sintax error na Parse Query, tako da ni ne mogu da odem na dodavanje parametara.

Ako probam da u where uslov stavim polje1=? and polje2=?, radi bez obzira koliko parametara imam (bitno je da imam jedan definisan). Nece da radi u ovom ugnjezdenom upitu.

Katarina
Re: SQL server 2000 - parametrizovan SQL query za DTS 30.09.2004. u 00:12 · pre 268 meseci #4
Nisam nikada koristio parametrizovane upite a ne znam ni sta ti je ovo DTS, ali ako ti je to sintaksa za TRANSACT SQL i kao sto si navela da ne prima ? u ugnjezdenoj petlji mozes da probas sledece:

DECLARE @param1 varchar(30)
DECLARE @param2 varchar(30)

SET @param1 = ?;
SET @param2 = ?;
select productID, office_name, office_infoID, officeID, serviceID, currID,
bankID, bank_name, branch_name, branch_infoID, branchID, rtrim(left(c.corr_name,25))+'('+cast(c.priority as varchar)+')' as corr_name, p.corrID as corrID, countryID, cityID, p.status as status, p.folio_type as folio_type
from dbo.v_Product_POS p LEFT OUTER JOIN dba.Correspondent c on p.corrID=c.corrID
where p.status=1
and ((select new_pp from oper.Agent where Acode=@param1)*p.officeID>=0
or (select new_pp from oper.Agent where Acode=@param2)*p.branchID>=0)
order by productID desc;


U svakom slicaju ako ti nista ne funkcionise napravi query rucno pomocu stringova.
Re: SQL server 2000 - parametrizovan SQL query za DTS 30.09.2004. u 12:26 · pre 268 meseci #5
DTS (Data Transformation Services) jesu servisi SQL servera za brzo prebacivanje puno podataka iz jedne baze u drugu (ili iz fajla / u fajl). Upit koji sam navela koristim za selektovanje podataka koji se prebacuju. Kada se koristi Transform Data Task potrebno je napisati samo SQL upit (znaci jedna naredba), ne moze se koristiti Transact SQL. A meni je potrebna zavisnost od spoljasnjeg parametra.

Postoji drugi nacin. Da prvo ove podatke ispucam u neku tabelu (prilikom pozivanja paketa u zavisnosti od prosledjenog parametra). I onda selektovanje vrsim samo iz te tabele upitom tipa (select polje1, polje2, ..., poljeN from pom_table where polje1=? ).Ovo sam uradila i radi sve super.

Ono sto sam ja htela jeste da izbegnem ubacivanje u pomocnu tabelu, vec sam htela sve resiti jednim upitom. Zanima me da li je to moguce? Da znam za ubuduce :) Ako nije moguce zasto nije moguce, jer nisam uspela da nadjem objasnjenje o tome da li je dozvoljeno koriscenje parametara u ugnjezdenom upitu koji se koristi kao Transform Data Task.

Pozdrav
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme