Toon posts:

[SQL] Create Procedure

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het maken van een procedure. En het maken ervan is eigenlijk geen probleem. Maar zoals ik hem wil krijg ik hem niet aan de praat.

Ik heb overigens al gezocht op google, got, w3schools.com etc.. En er waren zat voorbeelden maar ik kwam d'r toch niet helemaal uit.

Zie:
code:
1
2
3
4
5
6
CREATE PROCEDURE test
AS
    DECLARE @blaat  varchar(25)
BEGIN
    SELECT * FROM database.dbo.users WHERE naam=@blaat
END

Deze create procedure wordt na mijn idee goed aangemaakt. het uitvoeren daarintegen gaat wat minder.

Als ik hem wil uitvoeren neem ik aan dat ik de waarde @blaat moet kunnen zetten. Maar wanneer ik bij die execute doe: SET @blaat = jan
Krijg ik de error: database.dbo.users bestaat niet.

Kan iemand mij uitleggen wat ik fout doe. Ik moet er namelijk nog een aantal gaan maken dus is wel makelijk als ik goed snap hoe dit werkt.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 05:42
En die database bestaat wel?

  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
code:
1
SET @blaat = 'jan'

al eens geprobeerd ?
(let op de quotes).

Trouwens, waarom maak je een SP voor zo'n eenvoudige query ?

[ Voor 38% gewijzigd door whoami op 26-03-2005 20:16 ]

https://fgheysels.github.io/


  • StefSybo
  • Registratie: Maart 2004
  • Niet online
Waarschijnlijk gewoon om het uit te proberen ;)

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 15-04 19:43

Gé Brander

MS SQL Server

Verwijderd schreef op zaterdag 26 maart 2005 @ 16:43:
Ik ben bezig met het maken van een procedure. En het maken ervan is eigenlijk geen probleem. Maar zoals ik hem wil krijg ik hem niet aan de praat.

Ik heb overigens al gezocht op google, got, w3schools.com etc.. En er waren zat voorbeelden maar ik kwam d'r toch niet helemaal uit.

Zie:
code:
1
2
3
4
5
6
CREATE PROCEDURE test
AS
    DECLARE @blaat  varchar(25)
BEGIN
    SELECT * FROM database.dbo.users WHERE naam=@blaat
END

Deze create procedure wordt na mijn idee goed aangemaakt. het uitvoeren daarintegen gaat wat minder.

Als ik hem wil uitvoeren neem ik aan dat ik de waarde @blaat moet kunnen zetten. Maar wanneer ik bij die execute doe: SET @blaat = jan
Krijg ik de error: database.dbo.users bestaat niet.

Kan iemand mij uitleggen wat ik fout doe. Ik moet er namelijk nog een aantal gaan maken dus is wel makelijk als ik goed snap hoe dit werkt.
Dat kan nogal verschillend opgevat worden je vraag. Verschillende antwoorden zijn:
In onderstaande code is de naam die gezocht wordt altijd 'piet'. En dat lijkt mij niet handig.
code:
1
2
3
4
5
6
7
CREATE PROCEDURE test
AS
    DECLARE @blaat  varchar(25)
    SET @blaat = 'piet'
BEGIN
    SELECT * FROM [database].[dbo].[users] WHERE [naam]=@blaat
END


In onderstaand geval voer je de procedure TEST uit en geef je een variabele mee.
EXEC test 'jan' -- gegevens is de waarde die @blaat dan in de sp krijgt
code:
1
2
3
4
5
6
CREATE PROCEDURE test
    @blaat varchar(25) 
AS
BEGIN
    SELECT * FROM [database].[dbo].[users] WHERE [naam]=@blaat
END


Probeer je code tussen AS en het einde altijd even uit in Query Analyzer. Dat geeft je een vertrouwd gevoel.

Waar ik zeker mee zou werken als ik jou was zijn de '[' en ']'. Deze zorgen er voor dat je reserved names kan gebruiken in database namen, sp's en andere logica. Reserved names zijn dus onder andere 'user', 'database', 'name' etc. Zoek daar maar eens op op Internet.

De foutmelding die je krijgt kan ook aangeven dat je tabel users:
1) niet bestaat
2) niet als owner 'dbo' heeft
3) de database genaamd 'database' al niet bestaat.

Dus ik heb niet genoeg info om te zeggen waar het nu aan ligt waarom het niet werkt wat je probeert te bereiken.

[ Voor 10% gewijzigd door Gé Brander op 27-03-2005 13:25 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!