私は、2つの入力を取り、2つの出力を与える手続きを作成しました。
私は別にクエリを実行すると、それは私に適切な出力を提供します、しかし、私は、クエリを呼び出しながらそれは私null
結果プロシージャがnullの結果を生成するのはなぜですか?
を作る手順を呼び出そうとする場合:
SELECT field1, field2
INTO @var1, @var2
FROM MyTable ID=? and Name=?
、その後:
select @var1, @var2;
しかし、同じコードを手続きに組み込むと、両方のフィールドにnull
が与えられます。
手順:
DELIMITER $$
CREATE DEFINER=`user`@`localhost` PROCEDURE `My_Proc`(
IN `ID` INT,
IN `Name` VARCHAR(20)
-- OUT `result` INT,
-- OUT `result1` INT
)
BEGIN
set @var1 = 0;
set @var2 = 0;
set @query := CONCAT("SELECT
field1, field2
INTO @var1, @var2
FROM MyTable ID=? and Name=?");
PREPARE stmt FROM @query;
Execute stmt USING @Id,@Name;
DEALLOCATE PREPARE `stmt`;
select @var1,@var2;
END
私は手続きの外select @var1,@var2;
を呼び出そうとしましたが、それはまた、ヌルフィールドを与えます。あなたが手順のthatsの中にいくつかのミスは、以下の削除されている必要があり、私はMySQLのワークベンチで6.0
削除を持っていますfield1とfield2の動的クエリの単一引用符を使用し、id =の前にwhere節を使用します。 –
@AnkitAgrawal、実際のクエリではないところで、デモコードの作成中に間違って追加しました。 – Niraj
私の答えは以下を参照 –