Reputation: 737
I have here a stored procedure that calls table columns from the sample database, but my problem is I wanted to make one column name into a variable so that i could use it in a condition. My code does not work but I have no clue on how to make it as a variable.
I want to make the column name SALARY as a variable.
Here is my code:
CREATE PROCEDURE TAXEXEMPT ()
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE display CURSOR WITH RETURN TO CLIENT FOR
SELECT EMPNO, LASTNAME, SALARY, SALARY AS "TAX EXEMPTION"
FROM EMPLOYEE
WHERE WORKDEPT BETWEEN 'C01' AND 'D21';
IF ( SALARY < 15001 ) THEN
--DO NOTHING
ELSEIF ( SALARY >= 15001 OR SALARY <= 22000 ) THEN
UPDATE EMPLOYEE SET "TAX EXEMPTION" = SALARY * 1.03;
ELSEIF ( SALARY >= 22001 OR SALARY <= 32000 ) THEN
UPDATE EMPLOYEE SET "TAX EXEMPTION" = (SALARY * 1.05) + 100;
ELSEIF ( SALARY >= 32001 OR SALARY <= 45000 ) THEN
UPDATE EMPLOYEE SET "TAX EXEMPTION" = (SALARY * 1.07) + 200;
ELSE
--DO NOTHING
END IF;
OPEN display;
END
Any kind of help will do, thanks in advance.
Upvotes: 0
Views: 778
Reputation: 19001
What you want is a CASE expression:
DECLARE display CURSOR WITH RETURN TO CLIENT FOR
SELECT EMPNO, LASTNAME, SALARY,
CASE
WHEN SALARY < 15001 THEN SALARY
WHEN SALARY BETWEEN 15001 AND <= 22000 THEN SALARY * 1.03
WHEN SALARY BETWEEN 20001 AND <= 32000 THEN (SALARY * 1.05) + 100
...
ELSE SALARY
END AS "TAX EXEMPTION"
FROM EMPLOYEE
WHERE WORKDEPT BETWEEN 'C01' AND 'D21';
OPEN display;
Upvotes: 3