2

パラメータ(サンプルID)を受け取り、そのIDに関連する列をあるテーブルから別のテーブルにコピーするストアドプロシージャを作成しました。サブクエリの結果をパラメーターとして受け取るストアド プロシージャを作成するにはどうすればよいですか。データベースは mysql です。

これは私の例です.テーブルからプロシージャにIDを選択するクエリを渡したい..

DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`sasi`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sasi`(IN idno int(4))

    BEGIN
    INSERT INTO user5(id,email,address,fullname,gender,phonenumber)
    SELECT id,email,address,fullname,gender,phonenumber FROM user1  where id != idno;
    END$$

DELIMITER ;

call sasi(4);
4

1 に答える 1

7

クエリの結果をストアド プロシージャに渡すには、クエリを角かっこで囲みます。
例えば:

call sasi((select max(id) from sometable where somecondition));

クエリが 1 つの行と 1 つの列のみを返すことを確認する必要があります。

編集:

プロシージャを複数回、行ごとに 1 回呼び出す場合は、プロシージャを次のように変更しますFUNCTION

CREATE FUNCTION sasi(idno int(4))
RETURNS int(4)
BEGIN
    INSERT INTO user5(id,email,address,fullname,gender,phonenumber)
    SELECT id,email,address,fullname,gender,phonenumber FROM user1  where id != idno;
    RETURN idno;
END

次に、次のように呼び出します。

select sasi(id)
from table
where ...

sasi(id)where句に一致するすべての行に対して呼び出されます。

于 2012-06-01T14:09:38.747 に答える