webForumDet fria alternativet

Stored Procedure - problem

4 svar · 333 visningar · startad av Andy

AndyMedlem sedan sep. 2001138 inlägg
#1

Är ganska så färsk vad gäller stored procedures och skulle därför behöva lite hjälp.

Har en stored procedure som ser ut så här:

CREATE PROCEDURE sp_forumReplyToTopic
@intBelongsToTopic int,
@strText ntext,
@dteDate datetime,
@intPoster int,
@strShowSignature varchar(10),
@strIP varchar(50),
@intBelongsInForum int
AS
/* Add reply to database */
INSERT INTO tablePosts (BelongsToTopic, Text, Date, Poster, ShowSignature, IP)
VALUES (@intBelongsToTopic, @strText, @dteDate, @intPoster, @strShowSignature, @strIP)
/* Update topic with info about latest reply and latest poster */
UPDATE tableTopics
SET LatestReplyDate = @dteDate, LatestReplyPoster = @intPoster
WHERE ID = @intBelongsToTopic
/* Update forum with info about latest reply and latest poster */
UPDATE tableForums
SET LatestPostDate = @dteDate, LatestPostPoster = @intPoster
WHERE ID = @intBelongsInForum
/* Get the total amounts of replies to this topic */
SELECT COUNT(*) AS TotalPosts FROM tablePosts WHERE BelongsToTopic = @intBelongsToTopic
GO

SPn tar emot ett gäng parametrar och uppdaterar databasen. Jag vill även att den skall returnera ett värde (TotalPosts).

Jag anropar SPn så här:

Set rs = Server.CreateObject("ADODB.Recordset")
SQLSQuery = "EXEC sp_forumAddNewTopic " &_
"@intBelongsToTopic=" & BelongsToTopic & ", " &_
"@strText='" & Text & "', " &_
"@dteDate='" & theDate & "', " &_
"@intPoster=" & PosterID & ", " &_
"@strShowSignature='" & ShowSignature & "', " &_
"@strIP='" & Request.ServerVariables("REMOTE_ADDR") & "', " &_
"@intBelongsInForum=" & BelongsInForum
Connect.Execute(SQLSQuery)
intTotalReplies = rs("TotalPosts")
rs.Close
Set rs = nothing

Men när jag exekverar koden får jag detta felmeddelande:

@intBelongsToTopic is not a parameter for procedure sp_forumAddNewTopic.

Om jag skriver ut strängen SQLQuery ser den ut så här:

[kod]
EXEC sp_forumAddNewTopic @intBelongsToTopic=6, @strText='test', @dteDate='3/22/2003 2:14:06 AM', @intPoster=1, @strShowSignature='yes', @strIP='127.0.0.1', @intBelongsInForum=6

AndyMedlem sedan sep. 2001138 inlägg
#2

Glöm det... löste det själv. Anropade fel SP... *skäms* :)

Men nu får jag det här felet:

Item cannot be found in the collection corresponding to the requested name or ordinal.

Raden den klagar på är denna:
intTotalReplies = rs("TotalPosts")

@ndersMedlem sedan juni 200026 914 inlägg
#3

Släng in detta överst i proceduren:

SET NOCOUNT ON

Mvh,

AndyMedlem sedan sep. 2001138 inlägg
#4

Får samma felmeddelande ändå...

Jag är inte alls säker på att jag exekverar SPn på rätt sätt, och att jag använder mitt recordset på rätt sätt...

Om jag exekverar SPn i SQL Query Analyzer så fungerar allt som det är tänkt.

AndyMedlem sedan sep. 2001138 inlägg
#5

Löst. Ändrade ASP-koden till detta:

SQLSQuery = "EXEC sp_forumReplyToTopic " &_
"@strText='" & Text & "', " &_
"@intBelongsToTopic=" & BelongsToTopic & ", " &_
"@dteDate='" & theDate & "', " &_
"@intPoster=" & PosterID & ", " &_
"@strShowSignature='" & ShowSignature & "', " &_
"@strIP='" & Request.ServerVariables("REMOTE_ADDR") & "', " &_
"@intBelongsInForum=" & BelongsInForum
set rs = Connect.Execute(SQLSQuery)
intTotalReplies = rs(0)
rs.Close
Set rs = nothing
Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb