Output parameter not working
Hello all,
I have a sql stored procedure with an output parameter. I'm just trying to read the output parameter in my code and I just cannot get it to work. The error I get is:
"Procedure or function 'GetFolderData' expects parameter '@RootName', which was not supplied."
It looks like I am supplying this but it's not working. Can someone tell me what I may be doing wrong?
Here is my stored procedure:
Code:
ALTER PROCEDURE [dbo].[GetFolderData]
(
@RootID int,
@RootName varchar(30) OUTPUT,
@Username varchar(30)
)
AS
--Get folder root
SELECT @RootName = FR.RootName
FROM Site.FolderRoots FR
WHERE FR.RootID = @RootID
--Get folders
SELECT DISTINCT F.FolderID, F.FolderName, F.CreationDate
FROM Site.Folders AS F INNER JOIN
Site.FolderRights AS FR ON F.FolderID = FR.FolderID INNER JOIN
dbo.aspnet_Roles ON FR.RoleName = dbo.aspnet_Roles.RoleName INNER JOIN
dbo.aspnet_UsersInRoles ON dbo.aspnet_Roles.RoleId = dbo.aspnet_UsersInRoles.RoleId AND
dbo.aspnet_Roles.RoleId = dbo.aspnet_UsersInRoles.RoleId INNER JOIN
dbo.aspnet_Users ON dbo.aspnet_UsersInRoles.UserId = dbo.aspnet_Users.UserId AND dbo.aspnet_UsersInRoles.UserId = dbo.aspnet_Users.UserId
WHERE (F.RootID = @RootID) AND (dbo.aspnet_Users.UserName = @UserName)
ORDER BY F.CreationDate
Here is my code:
Code:
Public Sub New(ByVal RootID As Integer, ByVal UserName As String)
Dim cn As SqlConnection = New SqlConnection(ConnectionInfo.cs)
Dim cmd As SqlCommand = New SqlCommand("GetFolderData", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@RootID", RootID)
Dim param As SqlParameter = New SqlParameter("@RootName", SqlDbType.VarChar, 30, ParameterDirection.Output)
cmd.Parameters.Add(param)
cmd.Parameters.AddWithValue("@UserName", UserName)
_dtFolders = New DataTable
Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
da.Fill(_dtFolders)
_RootName = param.Value
_RootID = RootID
_UserName = UserName
End Sub
Thanks,
Strick
Re: Output parameter not working
Try changing the ParameterDirection to InputOutput. I know it doesn't sound right but I think I had the same trouble in the past and that fixed it.