Я использую хранимую процедуру для создания адаптера таблицы. Это мой синтаксис:(STOREDPROC) Сгенерированный оператор SELECT: поиск правильного синтаксиса для использования около NULL
DELIMITER $$
DROP PROCEDURE IF EXISTS `lcs_rdb`.`sp_EmployeeListReport`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_EmployeeListReport`(in where_clause TEXT)
BEGIN
SET @sql = CONCAT("SELECT
emp.employee_id,
group_concat(distinct `ext`.`extension_number` separator ',') AS extension_number,
emp.employee_lastname, emp.employee_firstname,
dept.department_description,
divs.division_description,
grps.group_description,
st.site_name, emp.audit_date,
group_concat(distinct `cst_ctr`.`cost_center_description` separator ',') AS cost_center_description
FROM employees emp INNER JOIN
employee_extensions emp_ext ON emp_ext.employee_id = emp.employee_id INNER JOIN
extensions ext ON ext.extension_id = emp_ext.extension_id INNER JOIN
departments dept ON emp.department_id = dept.department_id INNER JOIN
divisions divs ON dept.division_id = divs.division_id INNER JOIN
groups grps ON divs.group_id = grps.group_id INNER JOIN
sites st ON emp.site_id = st.site_id LEFT OUTER JOIN
employee_cost_centers emp_cstctr ON emp.employee_id = emp_cstctr.employee_id LEFT OUTER JOIN
cost_centers cst_ctr ON emp_cstctr.cost_center_id = cst_ctr.cost_center_id
where ", where_clause ,"");
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
Это ошибка, когда я выполнил его:
«Сформирован ЗЕЬЕСТ У вас ошибка в вашем синтаксисе SQL, проверьте руководство, которое соответствует Вашей версии сервера MySQL для. правильный синтаксис для использования рядом с «NULL» по строке 1 »
Я думаю, проблема в предложении where. Но я не знаю, как это исправить. Пожалуйста помоги. Благодарю.
Ой, подождите. Посмотрите на мой код. :(он говорит: ** Аргумент не указан для параметра 'where_clause' of 'Public Overridable Overloads Function Fill (dataTable как LCSRDBDataSet.CostCenterStandardDataTable, where_clause As String) As Integer'. ** Синтаксис: * daCostCenterStandard.Fill (dtCostCenterStandard) * –
Как бы то ни было, * правильный синтаксис для использования рядом с «NULL» в строке 1 * ошибка из подготовленного оператора означает, что '@ sql' ** действительно null **, потому что хотя бы один из аргументов (неожиданно) null. Решение будет включать в себя выяснение, какой из них. –