2013-12-17 3 views
0

Я пробовал, но не получаю solutin regading sp ниже .. plz help !!Пытается решить ошибку 1064

CREATE PROCEDURE AccountLedgerViewUnderBank() 

begin 


WITH GroupInMainGroup (accountGroupId,HierarchyLevel) AS 
(
select accountGroupId, 
1 as HierarchyLevel 
from tbl_AccountGroup where accountGroupId='9' 
UNION ALL 
select e.accountGroupId, 
G.HierarchyLevel + 1 AS HierarchyLevel 
from tbl_AccountGroup as e,GroupInMainGroup G 
where e.groupUnder=G.accountGroupId 

) 
SELECT 
ledgerId AS 'Account Ledger Id', 
acccountLedgerName AS 'Account Ledger Name' 
FROM tbl_AccountLedger 

where accountGroupId IN (select accountGroupId from GroupInMainGroup 
) 
end ; // 

Ошибка показывает

ERROR 1064 (42000): 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 'Group 
InMainGroup (accountGroupId,HierarchyLevel) AS 
(
select accountGroupId, 
1 a' at line 6 
+3

MySQL не поддерживает общих табличных выражений. Вам нужно перейти на СУБД, которая их позволяет. –

ответ

2

Похоже, вы пытаетесь использовать CTE, которая не поддерживается с MySQL (на момент написания).

подзапросы поддерживаются большинством версий MySQL, так что вы можете быть в состоянии переписать его как что-то вроде:

CREATE PROCEDURE AccountLedgerViewUnderBank() 

begin 

SELECT  ledgerId AS 'Account Ledger Id', 
      acccountLedgerName AS 'Account Ledger Name' 
FROM  tbl_AccountLedger 

where  accountGroupId 
    IN  (select accountGroupId 
      from tbl_AccountGroup where accountGroupId='9' 
      UNION ALL 
      select e.accountGroupId 
      from tbl_AccountGroup as e,GroupInMainGroup G 
      where e.groupUnder=G.accountGroupId) 
end ; // 
+0

спасибо .. но ты пропустил; до конца на линии 16. +5 к u – gangotri

Смежные вопросы