2016-12-16 5 views
0

他のデータベースからエクスポートしたSQL関数コードがあります。しかし、私はそれを実行するとエラーが発生しますエクスポートされたSqlコードで実行時にエラーが発生する

#1064 - あなたはSQL構文に誤りがあります。右の構文はラインで「」の近くに使用するためにあなたのMariaDBサーバーのバージョンに対応するマニュアルを確認してください4

私のSQLコードは、あなたが区切り文字を変更する必要が

CREATE DEFINER=`root`@`localhost` FUNCTION `getCOGS`(pItemId BIGINT) RETURNS float 
    DETERMINISTIC 
BEGIN 
    declare vRet FLOAT; 
    SET vRet = 0.00; 
    SELECT SUM(d.quantity*d.unitPrice)/SUM(d.quantity) INTO vRet 
    FROM transaction_detail d 
    INNER JOIN transaction t ON (t.componentId = d.transactionId AND t.`type` = 'PURCHASE') 
    WHERE d.itemId = pItemId AND d.`type` = 1 AND d.accountId = 12; 
    RETURN vRet; 
END 
+0

にそれを設定することができます。構文もエラーメッセージも、その製品に関連していないようです。あなたの質問を編集し、正しいタグで再タグ付けすることをお勧めします。[タグ:mariadb] –

+0

@Damien_The_Unbeliever:彼はmariaDBからエクスポートして、それを変更する方法を尋ねていますSQLServer – TheGameiswar

+0

を実行します。@ TheGameiswar - *エラーメッセージ*は、mariadbを示します。だからそれは宛先サーバーのようです。ソースサーバーと対話できませんが、スクリプトがSQL Serverの構文と一致しません。だから、現時点では、私はSQL Serverがソースでもデスティネーションでもないと信じています。 –

答えて

0

です。 この

DELIMITER | 

CREATE DEFINER=`root`@`localhost` FUNCTION `getCOGS`(pItemId BIGINT) RETURNS float 
    DETERMINISTIC 
BEGIN 
    declare vRet FLOAT; 
    SET vRet = 0.00; 
    SELECT SUM(d.quantity*d.unitPrice)/SUM(d.quantity) INTO vRet 
    FROM transaction_detail d 
    INNER JOIN transaction t ON (t.componentId = d.transactionId AND t.`type` = 'PURCHASE') 
    WHERE d.itemId = pItemId AND d.`type` = 1 AND d.accountId = 12; 
    RETURN vRet; 
END 
| 
DELIMITER ; 

を試してみてくださいDELIMITER文は別のセミコロン(;)(ここでは|)で標準区切り文字を変更します。マイクロソフトから特定のSQLデータベース製品である:

あなたのクエリが完了したら、[SQLサーバタグ]はバック;

+0

@nishanそれは解決されていますか? – jophab

関連する問題