I've Created a SQL Procedure as follows.
I'm executing it asCode:Create Proc spGetEmpDetails @Id int,@Name varchar(30) OUT, @Sal integer OUT,@DepName varchar(30) OUT, @Location varchar(30) OUT AS BEGIN Select @Name = t1.Name, @Sal= t1.Salary, @DepName = t2.DeptName, @Location = t2.Location FROM tblEmployee t1 INNER JOIN tblDepartment t2 ON t1.DepId = t2.Id WHERE t1.ID = @Id END
I'm getting an error like : Must pass parameter number 2 and subsequent parameters as '@name = value'. After the form '@name = value' has been used, all subsequent parameters must be passed in the form '@name = value'.Code:Declare @Name nvarchar(30),@Sal integer,@Dep nvarchar(25),@Loc nvarchar(25) EXEC spGetEmpDetails @Id=5,@Name OUT,@Sal OUT,@Dep OUT,@Loc OUT Select @Name as Name,@Sal as Salary,@Dep as DepartmentName,@Loc as Location
Shouldn't I give the First Parameter Name when supplying it as input value with other OUT Parameters ? We doesn't need to maintain order when giving parameter names with values,Right ? If So, when i tried giving @Id =5 as last Parameter like
I'm getting an error like : he formal parameter "@Id" was not declared as an OUTPUT parameter, but the actual parameter passed in requested output. (1 row(s) affected)Code:Declare @Name nvarchar(30),@Sal integer,@Dep nvarchar(25),@Loc nvarchar(25) EXEC spGetEmpDetails @Name OUT,@Sal OUT,@Dep OUT,@Loc OUT,@Id=5 Select @Name as Name,@Sal as Salary,@Dep as DepartmentName,@Loc as Location
Name | Salary|DepartmentName| Location
NULL | NULL |NULL | NULL
Worked fine when executing it as
EXEC spGetEmpDetails 5,@Name OUT,@Sal OUT,@Dep OUT,@Loc OUT
Where did i went wrong ?


Reply With Quote