Toon posts:

[SQL] Stored procedures handleiding.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil met SP in sql gaan spelen, weet iemand een goede handleiding hiervoor. Ik wil bijvoorbeeld alle kolommen in een tabel doorlopen en er een bewerking op uitvoeren.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

dat is volgens mij met de voorbeelden op technet.oracle.com al te vinden.

Euh, de vraag van yarvieh moest idd eerst :P

Verwijderd

welke database gebruik je?

Verwijderd

Topicstarter
De msde. (microsoft desktop engine.)

Verwijderd

Topicstarter
Ik wil graag de functie PROPER gebruiken in een stored Procedure. Deze ondersteunt dat echter niet. Nu las ik ergens dat ik met een XP (Extended stored procedure) C code kan schrijven door mijn procedure heen om het eenvoudig zelf te kunnen bouwen. Echter weet ik niet hoe ik gebruik maak van XP, kan iemand mij dat toelichten?

Verwijderd

T-sql support die functie niet.

Verwijderd

F1 ?

Verwijderd

Wat doet PROPER precies? Want wellicht is er een T-SQL equivalent.

/me , zwarte band T-SQL

Verwijderd

Topicstarter
peter pan
wordt:
Peter Pan

Verwijderd

Op maandag 10 juni 2002 13:39 schreef lisson01 het volgende:
peter pan
wordt:
Peter Pan
Mja, stored procedures zijn er niet voor data manipulatie maar voor data storage en retrieval / beheer. Je zou dit in je business logic op moeten lossen waar je de data opslaat (stuurt naar de data access layer) of waar je de data ontvangt van de data access layer.

Verwijderd

Topicstarter
Ik weet niet precies hoe het werkt, maar ik heb een simple SP gemaakt maar deze werkt natuurlijk niet:
code:
1
2
3
4
5
6
7
8
9
10
11
/*
    (
        @tablename  string
        @aantal     long    OUTPUT
    )
*/
As
    SELECT count(id) as @aantal from @tablename

    /* set nocount on */
    return @aantal

Weet iemand hoe ik dit oplos

Verwijderd

Op maandag 10 juni 2002 14:23 schreef lisson01 het volgende:
Ik weet niet precies hoe het werkt, maar ik heb een simple SP gemaakt maar deze werkt natuurlijk niet:
code:
1
2
3
4
5
6
7
8
9
10
11
/*
    (
        @tablename  string
        @aantal     long    OUTPUT
    )
*/
As
    SELECT count(id) as @aantal from @tablename

    /* set nocount on */
    return @aantal

Weet iemand hoe ik dit oplos
Dit gaat niet werken omdat je de tablename in de FROM clause niet in een variable kunt stoppen. Gebruik dan ook sp_executesql waarbij je eerst de select query in een string aanmaakt. Verder is 'count(id) as @variable' incorrect. Je moet @variable = count(id) doen.

Dus iets als:
code:
1
2
3
4
DECLARE @sQuery nvarchar(1024)
SET @sQuery = N'SELECT count(id) FROM ' + @sTablename
EXEC sp_executesql @sQuery
GO

Echter, dit levert een resultset op met 1 row en 1 column met daarin de count.

Omdat je de string niet hergebruikt, is dit niet efficient, SQLServer moet nl. elke keer de querystring opnieuw compileren.

Verwijderd

Topicstarter
Okay,
maar hoe krijg ik dan de count(id) in een variabele?

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op maandag 10 juni 2002 14:59 schreef lisson01 het volgende:
Okay,
maar hoe krijg ik dan de count(id) in een variabele?
Kijk voor de gein eens in de BooksOnline. Daar kan je al een heleboel zaken vandaan halen.

[no offence mode]
zonder voorkennis een sproc bouwen, maar wel ineens alles willen werkt natuurlijk niet.
[/no offence mode]

btw een waarde opslaan in een var zou je bijv zo kunnen doen:
select @boeh=count(id) from tabel
Alleen werkt bovenstaande weer niet in combinatie met de sp_executesql bij mijn weten (ivm scope van variabele).

btw2. kijk ook eens naar UDF's voor een PROPER-achtige functionaliteit, misschien kan je daar wat mee (is wel sql2000)

Today's subliminal thought is:


Verwijderd

Op maandag 10 juni 2002 19:21 schreef Annie het volgende:
Kijk voor de gein eens in de BooksOnline. Daar kan je al een heleboel zaken vandaan halen.
Das de grap hier, bij msde krijg je geen booksonline volgens mij ;)

Verwijderd

Op maandag 10 juni 2002 14:59 schreef lisson01 het volgende:
Okay,
maar hoe krijg ik dan de count(id) in een variabele?
Dat kan niet, want de query die wordt geexecuteerd in sp_executesql draait in een aparte context, dus iedere var die je daar aanspreekt en terug wilt geven bestaat niet, het is in feite een andere scope.

Wat je beter kunt doen is de query in de data-access layer samenstellen en die direct aan een ADO command object meegeven. Qua snelheid maakt het niets uit, beide keren moet SQLServer de query iedere keer compileren.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op maandag 10 juni 2002 19:51 schreef Yarvieh het volgende:

[..]

Das de grap hier, bij msde krijg je geen booksonline volgens mij ;)
whoeps, my bad, ikke niet goed gelezen :o
Op maandag 10 juni 2002 20:15 schreef Otis het volgende:
Dat kan niet, want de query die wordt geexecuteerd in sp_executesql draait in een aparte context, dus iedere var die je daar aanspreekt en terug wilt geven bestaat niet, het is in feite een andere scope.
dat zeg ik: gamma! ;)

Today's subliminal thought is:

Pagina: 1