I need to create a stored procedure for getting the count of two table by using where clause condition, but when i try to create procedure it shows error
Query : CREATE PROCEDURE bcp.getTotalCount BEGIN -- Create two integer values DECLARE @tableOneCount int, @tableTwoCount int -- Get ...
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN
-- Create two integer values
DECLARE @tableOneCount int, @tableTwoCount' at line 2
这是我尝试创建的存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS bcp.getTotalCount $$
CREATE PROCEDURE bcp.getTotalCount
BEGIN
-- Create two integer values
DECLARE @tableOneCount INT, @tableTwoCount INT
-- Get the number of rows from the first table
SELECT @tableOneCount = (SELECT COUNT(*) FROM candidates WHERE active=1)
SELECT @tableTwoCount = (SELECT COUNT(*) FROM voters_enrollment WHERE active=1)
-- Return the sum of the two table sizes
SELECT TotalCount = @tableOneCount + @tableTwoCount
END $$
DELIMITER ;
为了更好地理解我试过像这样的简单的SQL查询
SELECT (SELECT COUNT(*) FROM candidates WHERE active=1)+
(SELECT COUNT(*) FROM voters_enrollment WHERE active=1) AS Total
我得到结果
Total
10
像这样我需要创建过程并通过使用简单的sql查询调用它来获得相同的结果。任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
您必须在创建语句后添加AS。
DELIMITER $$
DROP PROCEDURE IF EXISTS bcp.getTotalCount $$
CREATE PROCEDURE bcp.getTotalCount
AS
BEGIN
-- Create two integer values
DECLARE @tableOneCount INT, @tableTwoCount INT
-- Get the number of rows from the first table
SELECT @tableOneCount = (SELECT COUNT(*) FROM candidates WHERE active=1)
SELECT @tableTwoCount = (SELECT COUNT(*) FROM voters_enrollment WHERE active=1)
-- Return the sum of the two table sizes
SELECT TotalCount = @tableOneCount + @tableTwoCount
END $$
DELIMITER ;
答案 1 :(得分:0)
你可以试试这个,交配:
DELIMITER $$
DROP PROCEDURE IF EXISTS bcp_getTotalCount $$
CREATE PROCEDURE bcp_getTotalCount()
BEGIN
-- clear/initialize session variables
SET
@tableOneCount = 0,
@tableTwoCount = 0;
START TRANSACTION;
-- get record count from the source tables
SELECT COUNT(*) INTO @tableOneCount FROM candidates WHERE active = 1;
SELECT COUNT(*) INTO @tableOneCount FROM voters_enrollment WHERE active = 1;
-- return the sum of the two table sizes
SELECT TotalCount = @tableOneCount + @tableTwoCount;
COMMIT;
END $$
DELIMITER ;
原子性的MySQL事务