Menu med rekursiv funktion - Stored Procedure
HejJeg har lige nu en ASP menu der bliver hentet fra en database.
DB'en: (MsSql)
Id - Ref_Id - Navn - Order
Når jeg henter menu ud køre jeg bare en funktion i en funktion, hvilket er ret langsomt. se eks. nedenfor.
Tænker om man kan lave det på en smartere måde, måske i har nogle gode idéer?
Har hørt nogle snakke om, at man kan lave det med en Stored procedure, har i nogle forslag til det?
Håber i kan hjælpe så jeg igen kan få liv i sitet.
--------------------------------------
<ul>
<%
Function BygHovedMenu(MenuID)
UnderSQL = "SELECT * FROM Live_Menu_" & MenuNavn & " WHERE Ref_Id = ? ORDER BY Nummer"
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = Conn
cmd.CommandType = adCmdText
cmd.CommandText = UnderSQL
cmd.Parameters.Append cmd.CreateParameter("Ref_Id", adInteger, adParamInput, 4, MenuID)
set UnderRS = cmd.Execute()
Response.write("<ul>")
While Not UnderRS.EOF
Response.Write("<li>")
If CountSubsH(UnderRS("ID")) > 0 Then
Response.Write("" & UnderRS("Navn") & "")
BygHovedMenu UnderRS("ID")
Else
Response.Write("" & UnderRS("Navn") & "")
End If
Response.Write("</li>")
UnderRS.MoveNext
Wend
Response.write("</ul>")
End Function
Function CountSubsH(MenuID)
CountSQL = "SELECT Count(*) as CountSubs FROM Live_Menu_" & MenuNavn & " WHERE Ref_Id = ?"
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = Conn
cmd.CommandType = adCmdText
cmd.CommandText = CountSQL
cmd.Parameters.Append cmd.CreateParameter("Ref_Id", adInteger, adParamInput, 4, MenuID)
set CountRS = cmd.Execute()
CountSubsH = CountRS("CountSubs")
End Function
SQL = "SELECT * FROM Live_Menu_" & MenuNavn & " WHERE Ref_Id = ? ORDER BY Nummer"
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = Conn
cmd.CommandType = adCmdText
cmd.CommandText = SQL
cmd.Parameters.Append cmd.CreateParameter("Ref_Id", adInteger, adParamInput, 4, "0")
set RS = cmd.Execute()
If RS.BOF AND RS.EOF Then
Else
While Not RS.EOF
Response.write("<li>")
If CountSubsH(RS("ID")) > 0 Then
Response.Write("" & RS("Navn") & "")
BygHovedMenu RS("Id")
Else
Response.Write("" & RS("Navn") & "")
End if
Response.write("</li>")
RS.MoveNext
Wend
End If
%>
</ul>