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.
dat is volgens mij met de voorbeelden op technet.oracle.com al te vinden.
Euh, de vraag van yarvieh moest idd eerst
Euh, de vraag van yarvieh moest idd eerst
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
Wat doet PROPER precies? Want wellicht is er een T-SQL equivalent.
/me , zwarte band T-SQL
/me , zwarte band T-SQL
Verwijderd
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.Op maandag 10 juni 2002 13:39 schreef lisson01 het volgende:
peter pan
wordt:
Peter Pan
Ik weet niet precies hoe het werkt, maar ik heb een simple SP gemaakt maar deze werkt natuurlijk niet:
Weet iemand hoe ik dit oplos
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
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.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
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.
Kijk voor de gein eens in de BooksOnline. Daar kan je al een heleboel zaken vandaan halen.Op maandag 10 juni 2002 14:59 schreef lisson01 het volgende:
Okay,
maar hoe krijg ik dan de count(id) in een variabele?
[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
Das de grap hier, bij msde krijg je geen booksonline volgens mijOp 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.
Verwijderd
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.Op maandag 10 juni 2002 14:59 schreef lisson01 het volgende:
Okay,
maar hoe krijg ik dan de count(id) in een variabele?
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.
whoeps, my bad, ikke niet goed gelezenOp maandag 10 juni 2002 19:51 schreef Yarvieh het volgende:
[..]
Das de grap hier, bij msde krijg je geen booksonline volgens mij
dat zeg ik: gamma!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.
Today's subliminal thought is:
Pagina: 1