Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL грешка:# 1064 при създаване на функция в plsql с помощта на mysql

За това нямате нужда от функция, имате нужда от съхранена процедура.

DELIMITER $$
CREATE PROCEDURE proc_name(IN col_number1 INT, IN col_number2 INT)
BEGIN
SET @col1 := CONCAT('CHR_MORNING', col_number1);
SET @col2 := CONCAT('CHR_EVENING', col_number2);

SET @sql := CONCAT('
SELECT 
CASE WHEN ', @col1, '="SUN" && ', @col2, '="SUN" THEN "S"
WHEN (', @col1, '="HOL" && ', @col2, '="HOL") THEN "H"
WHEN (', @col1, '="LEA" && ', @col2, '="LEA") THEN "L"
WHEN (', @col1, '="ABS" && ', @col2, '="ABS") THEN "-"
WHEN (', @col1, '="NA" && ', @col2, '="NA") THEN "-"
ELSE "8"
END AS whatever_you_want_to_name_your_column
FROM att_t_register WHERE CHR_MONTH = "jan" AND INT_YEAR = 2014;
');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END $$
DELIMITER ;

След това ще го изпълните с

CALL proc_name(1, 1);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте, ако съществува, вмъкнете, ако не съществува

  2. Когато се изпълнява приложение Flask с Flask-SQLAlchemy, как да използвам MySQL клиент в същата база данни по едно и също време?

  3. Вземете последния въведен идентификатор на автоматично увеличение в mysql

  4. Как да използвате индекси за филтриране на заявка МЕЖДУ две колони

  5. Най-добра практика за съхранение на потребителски имена и пароли в MySQL бази данни