/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MSSQL: Stored Procedure + ADO
Fra : Anton Vestegaard


Dato : 22-01-03 00:45

Hej
Jeg er løbet ind i et lille problem med en stored procedure og ADO.
Den stored procedure jeg kalder er som følger:

ALTER PROCEDURE GET_AONUMMER AS
declare @next_id integer
begin transaction
update ID_INDEX
set id_aonummer = id_aonummer + 1
select @next_id = id_aonummer from id_index
commit transaction
RETURN @next_id

Når jeg kalder proceduren via ADO får jeg ikke noget tilbage!
Hvis jeg ændrer RETURN til SELECT virker det, men det må jeg ikke!
Jeg skal bruge proceduren som den er skrevet!

Forslag modtages med glæde.

På forhånd tak
Anton Vestergaard



 
 
Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 09:36

Anton Vestegaard skrev:

> Når jeg kalder proceduren via ADO får jeg ikke noget tilbage!
> Hvis jeg ændrer RETURN til SELECT virker det, men det må jeg
> ikke! Jeg skal bruge proceduren som den er skrevet!

Du kan prøve med følgende wrapper:

DECLARE @Return int
EXEC @Return = GET_AONUMMER
SELECT @Return

NB: Returværdier fra sp'er er ikke beregnet til at levere data -
kun til at give statusinformation om hvordan sp'en er eksekveret.
Det er bedre at bruge en OUTPUT-parameter - se følgende fra min
SQL-bibel [1]:

,----
| If it sounds like I have an opinion on how return values should be
| used, it's because I most definitely do. I was actually originally
| taught to use return values as a "trick" to get around having to
| use output parameters - in effect, as a shortcut. Happily, I
| overcame this training. The problem is that, like most shortcuts,
| you're cutting something out, and, in this case, what you're
| cutting out is rather important.
|
| Using return values as a means of returning data back to your
| calling routine clouds the meaning of the return code when you need
| to send back honest-to-goodness error codes. In short - don't go
| there!
`----

Noter:
======
[1] Professional SQL Server 2000 Programming, Robert Vieira - WROX 2000
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Anton Vestegaard (22-01-2003)
Kommentar
Fra : Anton Vestegaard


Dato : 22-01-03 22:39

Hej Jens
Tak for dit svar.
Desværre løser det ikke problemet!
Jeg havde selv overvejet en wrapper, men kunne heller ikke få lov til det.
Hvis databasen skulle opgraderes ville det kunne give problemer.
Jeg tror at jeg tager fat i udviklerne af databasen (altså ikke MS SQL, men
dem der har lavet proceduren) og
fortæller hvad du har skrevet (og hvad jeg selv bruger RETURN til).
Tak for kildehenvisningen.

Jeg leder dog stadig efter en mulighed i ADO, såfremt udviklerne ikke er
indstillet på at ændre det i fremtidige applikationer.

mvh
Anton
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns930B61B4B7C0Cjcdmfdk@gyrosmod.dtext.news.tele.dk...
> Anton Vestegaard skrev:
>
> > Når jeg kalder proceduren via ADO får jeg ikke noget tilbage!
> > Hvis jeg ændrer RETURN til SELECT virker det, men det må jeg
> > ikke! Jeg skal bruge proceduren som den er skrevet!
>
> Du kan prøve med følgende wrapper:
>
> DECLARE @Return int
> EXEC @Return = GET_AONUMMER
> SELECT @Return
>
> NB: Returværdier fra sp'er er ikke beregnet til at levere data -
> kun til at give statusinformation om hvordan sp'en er eksekveret.
> Det er bedre at bruge en OUTPUT-parameter - se følgende fra min
> SQL-bibel [1]:
>
> ,----
> | If it sounds like I have an opinion on how return values should be
> | used, it's because I most definitely do. I was actually originally
> | taught to use return values as a "trick" to get around having to
> | use output parameters - in effect, as a shortcut. Happily, I
> | overcame this training. The problem is that, like most shortcuts,
> | you're cutting something out, and, in this case, what you're
> | cutting out is rather important.
> |
> | Using return values as a means of returning data back to your
> | calling routine clouds the meaning of the return code when you need
> | to send back honest-to-goodness error codes. In short - don't go
> | there!
> `----
>
> Noter:
> ======
> [1] Professional SQL Server 2000 Programming, Robert Vieira - WROX 2000
> --
> Jens Gyldenkærne Clausen
> MF (medlem af FIDUSO - www.fiduso.dk)
> I ovenstående tekst benyttes nyt komma
> (rettelser modtages gerne i dk.kultur.sprog)



Jens Gyldenkærne Cla~ (23-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-01-03 09:39

Anton Vestegaard skrev:

> Jeg havde selv overvejet en wrapper, men kunne heller ikke få
> lov til det.

Har du lavet wrapper-koden som en lagret procedure? Det er
formentlig nødvendigt.

> Hvis databasen skulle opgraderes ville det kunne
> give problemer.

En wrapper-procedure er en meget lille ændring, der ikke har
indflydelse på resten af programmet. En ændring af den originale
procedure er også let, men det kan dog have indvirkning på andre
dele af programmet, hvis den omtalte procedure bruges af andre
dele.


NB: Det er lettere at læse dine indlæg hvis du citerer lidt af det
du besvarer ovenover din egen tekst. Men et fornuftigt citat kan
man langt hurtigere danne sig et overblik over hvad du besvarer.
Se også usenet.dk's side om citatteknik:
<http://usenet.dk/netikette/citatteknik.html>.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Anton Vestergaard (23-01-2003)
Kommentar
Fra : Anton Vestergaard


Dato : 23-01-03 21:17


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns930C6215FFF1Ajcdmfdk@gyrosmod.dtext.news.tele.dk...
> > Jeg havde selv overvejet en wrapper, men kunne heller ikke få
> > lov til det.
>
> Har du lavet wrapper-koden som en lagret procedure? Det er
> formentlig nødvendigt.
Jeg har fået lov til at lave en wrapper.

Tak for hjælpen, også med netetikketten (jeg er ikke for god til at
overholde den.

/Anton



Jens Gyldenkærne Cla~ (24-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 24-01-03 10:10

Anton Vestergaard skrev:

> Tak for hjælpen, også med netetikketten (jeg er ikke for god
> til at overholde den.

Det går hastigt fremad. Din indledningstekst ("NN" <mail>
skrev...") er noget længere end nødvendigt, men det kan så vidt jeg
husker ikke gøres automatisk i OE. Jeg kan anbefale programmet OE
Quotefix <http://jump.to/oe-quotefix>, som forbedrer OE på mange
punkter.

Men indledningsteksten er en detalje, langt det vigtigste er at
citere fornuftigt - som det ser ud til at du nu har godt styr på.

FUT: dk.edb.internet.software.mail+news.outlook-express (svar på
dette indlæg henvises automatisk til nævnte gruppe)
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste