-2

このSQLプロシージャステートメントがありますが、変数が原因で失敗します。

CREATE PROCEDURE iskanje(@iskani_niz)
BEGIN
SELECT A.ime, A.opis, B.kategorija
FROM file as A, cathegory as B
WHERE A.ime LIKE '%'+@iskani_niz+'%' 
OR A.opis LIKE '%'+@iskani_niz+'%' 
OR B.kategorija LIKE '%'+@iskani_niz+'%';
END
4

2 に答える 2

1

その遅い答えをとても残念に思います...私が見つけたのは、sqlとmysqlのプロシージャに異なる構文があるということです...したがって、実際の構文は次のようになります。

set delimiter //

create procedure iskanje(in naziv varchar(10))

BEGIN
    SELECT A.ime, A.opis, B.kategorija
    FROM file as A, cathegory as B
    WHERE A.ime LIKE concat('%',naziv,'%')
       OR A.opis LIKE concat('%',naziv,'%')
       OR B.kategorija LIKE concat('%',naziv,'%');
END//

set delimiter ;
于 2013-03-28T10:33:55.827 に答える
0

代わりにこれを試して、プロシージャにパラメータを宣言してください。

CREATE PROCEDURE iskanje
    @iskani_niz nvarchar(max)
AS BEGIN

SELECT A.ime, A.opis, B.kategorija
FROM file as A, cathegory as B
WHERE A.ime LIKE '%'+@iskani_niz+'%' 
   OR A.opis LIKE '%'+@iskani_niz+'%' 
   OR B.kategorija LIKE '%'+@iskani_niz+'%';

END

ステートメントnvarchar(max)での使用法に基づいて私が想定した、よりも適切なタイプを指定する必要があることに注意してください。SELECT

于 2013-03-25T15:23:01.193 に答える