use variables in WHERE doesn't work?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • poolman
    New Member
    • Oct 2006
    • 8

    use variables in WHERE doesn't work?

    If I use a variable the query returns no result.
    If I hardcode some value I know is in the table it works 100%.
    What is wrong here?
    Thanks!

    Code:
    @employee_name			VarChar,
    @department_name		VarChar
    
    AS
    SET NOCOUNT ON
    
    SELECT DISTINCT
    	e.naam as employeeName,
    	d.naam as departmentName
    FROM
    	departments d
    	JOIN emp_dep ON d.id=emp_dep.dep_id
    	JOIN employees e ON emp_dep.emp_id=e.id
    	JOIN hours h ON e.id=h.employee_id
    WHERE
    	e.naam = @employee_name
     RETURN
  • poolman
    New Member
    • Oct 2006
    • 8

    #2
    Ok, made some progress already. I have this:

    Code:
    ALTER PROCEDURE dbo.spGetTimesheetListing
    @employee_name			VarChar(50),
    @department_name		VarChar(50)
    
    AS
    SET NOCOUNT ON
    
    SELECT DISTINCT
    	e.naam as employeeName,
    	d.naam as departmentName,
    	@employee_name as input_e_naam
    FROM
    	departments d
    	JOIN emp_dep ON d.id=emp_dep.dep_id
    	JOIN employees e ON emp_dep.emp_id=e.id
    	JOIN hours h ON e.id=h.employee_id
    WHERE
    	1=1
    	SELECT CASE WHEN @employee_name !='' THEN 'AND e.naam = @employee_name' END
    	SELECT CASE WHEN @department_name !='' THEN 'AND d.naam = @department_name' END
     RETURN
    Now If I use the
    Code:
    SELECT CASE WHEN @employee_name !='' THEN 'AND e.naam = @employee_name' END
    SELECT CASE WHEN @department_name !='' THEN 'AND d.naam = @department_name' END
    I get all rows of the table. If I use
    Code:
    AND d.naam = @department_name
    I get only the rows I need. Looks like the CASE/WHEN construct is
    not working...
    Last edited by poolman; Oct 27 '06, 01:54 PM. Reason: make stuff more clear

    Comment

    • NeoPa
      Recognized Expert Moderator MVP
      • Oct 2006
      • 32653

      #3
      I don't have any SQL server docs with me at home but shouldn't it be SELECT CASE WHERE rather than SELECT CASE WHEN?

      Comment

      • poolman
        New Member
        • Oct 2006
        • 8

        #4
        thanks, but no. This isn't a sql select statement but an Transact SQL extension og SQL. It's CASE WHEN THEN

        Comment

        Working...