Avatar billede poul-m Nybegynder
06. december 2000 - 15:56 Der er 9 kommentarer

Stored procedure med parameter

Hej!
Jeg har nu siddet og bøvlet med en stored procedure, der tager en int som parameter, og selecter fra en tabel med denne i sin where klausul;
------------------------------------------
CREATE PROCEDURE [navn(@id int)] AS
SELECT FROM tabel
WHERE id = @id
------------------------------------------
SQl sætning
EXECUTE navn(\"&id&\")
------------------------------------------
Jeg får at vide, at @id ikke er erklæret.
Jeg har prøvet med:
------------------------------------------
CREATE PROCEDURE [navn(@id int)] AS

DECLARE @id int

SELECT FROM tabel
WHERE id = @id
------------------------------------------
Men det hjælper ikke...Hvad gør jeg galt?
Avatar billede hornshoj Nybegynder
06. december 2000 - 15:59 #1
CREATE Procedure sp_GetNavn
    (
        @kundeid int
    )
As
SELECT * FROM Kunder WHERE kundeid = @kundeid

Fejlen er at du erklære en variable istedet for en parameter.
Avatar billede poul-m Nybegynder
06. december 2000 - 16:24 #2
Det funker stadig ikke! Her er min sp:
--------------------------------------------------
CREATE PROCEDURE count_site_tilknytning
    (
        @id int
    )
AS
SELECT navn, Count(navn) AS Antal
FROM site_tilknytning, under_kategori
WHERE under_kategori.under_kategori_id = site_tilknytning.under_kategori_id
AND site_tilknytning.under_kategori_id = @id
GROUP BY navn
ORDER BY Antal DESC;
--------------------------------------------------
Her er min ASP:
--------------------------------------------------
id = request.querystring(\"id\")
sql = \"EXECUTE count_site_tilknytning(\"&id&\")\"
Set Rs = Conn.execute(sql)
                           
do while NOT rs.eof
  response.write rs(\"navn\")&\" \"&rs(\"antal\")&\"<br>\"
  rs.movenext
loop
--------------------------------------------------
Og fejlen:
Error Type:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Line 1: Incorrect syntax near \'1\'.
/default.asp, line 66 (Set Rs = Conn.execute(sql))

Du får 20+ Hvis du kan svare på dette :-)
Avatar billede hornshoj Nybegynder
06. december 2000 - 16:27 #3
Du skal kalde din stored procedure således:
sql = \"count_site_tilknytning \" & id
set rs = Conn.Execute(sql)
Avatar billede poul-m Nybegynder
06. december 2000 - 16:34 #4
nej, så siger den
could not find stored procedure
count_site_tilknytning1
Avatar billede hornshoj Nybegynder
06. december 2000 - 16:36 #5
Du skal have mellemrum mellem din stored procedure og den parameter du sender med.
Se lige op på min sql, så kan du skimte et mellemrum!
Avatar billede poul-m Nybegynder
06. december 2000 - 16:40 #6
hehe ja, ok nu er der tilføjet et mellemum, men det virker stadig ikke.

Line1: Incorrect syntax near \'1\'
dafault.asp, line 66
Avatar billede nolle_k Nybegynder
07. december 2000 - 14:11 #7
CREATE PROCEDURE count_site_tilknytning
  @id int

AS
SELECT navn, Count(navn) AS Antal ....

Læg mærke til at der ikke skal være parenteser før og efter @id int.

Dim Command as ADODB.Command
Set Command = CreateObject(\"ADODB.Command\")

\'Set Type of call -> Stored Procedure call
Command.CommandType = adCmdStoredProc
\'Set name of stored procedure
Command.CommandText = \"count_site_tilknytning\"
\'Get the Parameters
Command.Parameters.Refresh


Command.Parameters(1).Value = id        Command.Parameters(1).Direction = adParamInput

Set Rs = Command.Execute(, , adCmdStoredProc)

Avatar billede nolle_k Nybegynder
07. december 2000 - 14:12 #8
Command.Parameters(\"@id\").Value = id       
Command.Parameters(\"@id\").Direction = adParamInput

Avatar billede sbarnney Nybegynder
16. januar 2001 - 20:31 #9
Hej poul-m

Du skal huske at tildele din variable en værdi.

DECLARE @find varchar(30)
SET @find = (SELECT * ......)

Stig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester