Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd SQL:# 1064 podczas tworzenia funkcji w plsql przy użyciu mysql

Nie potrzebujesz do tego funkcji, potrzebujesz procedury składowanej.

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 ;

Następnie wykonałbyś go za pomocą

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. Jak stworzyć stół TYMCZASOWY w laravelu

  2. Ogranicz liczbę wierszy na identyfikator w zapytaniu SQL

  3. Sharding i generowanie identyfikatorów jako instagram

  4. Jak zaimportować bazę danych za pomocą wiersza poleceń

  5. Ostrzeżenie:mysql_real_escape_string():Odmowa dostępu dla użytkownika ''@'localhost' (przy użyciu hasła:NIE)