0

SP の下に作成しようとしていますが、この 5 つのパラメーターすべてを実行しようとすると、最後の 3 つが出力パラメーターである入力として要求されます。誰かが私がいじっていることと、それを解決する方法を指摘できますか:

create PROCEDURE division_price_info_heatmap (@comp_id INT,
@compe_id INT, 
@Division_id INT out, 
@Division_name VARCHAR(20) out, 
@final_shipping_price DECIMAL(11,2) out)
AS
BEGIN
select T1.div, T1.div_n, (T1.price-T2.price)  as final_shipping_price from
(select  tcpi.division as div, td.division_name as div_n,
sum(tcpi.final_price_shipping) as price
from tb_competitor_product_info_new as tcpi 
inner join tb_division td on tcpi.division=td.division_id  
where competitor_id=@comp_id
group by tcpi.division, td.division_name
)   as T1,

(select  tcpi.division as div, td.division_name as div_n,
sum(tcpi.final_price_shipping) as price
from tb_competitor_product_info_new as tcpi 
inner join tb_division td on tcpi.division=td.division_id  
where competitor_id=@compe_id
group by tcpi.division, td.division_name
)   as T2
where T1.div=T2.div

END

実行コマンド:- division_price_info_heatmap 1,2

エラー :

エラー: プロシージャまたは関数 'division_price_info_heatmap' には、指定されていないパラメーター '@Division_id' が必要です。SQLState: S0004 エラーコード: 201

mssql とリス UI を使用しています。

もう 1 つ、パラメーターを割り当てる必要があります。

4

2 に答える 2

0

私の記憶が正しければ、MS SQL はOUTキーワードを使用するのではなくOUTPUT、ストアド プロシージャに使用します。その部分を変更してみてください。動作するはずです。こちら を 参考 に

プロシージャを呼び出すときは、別の回答で指摘されているように、出力も受け取る変数を指定する必要があります。

余談ですが、出力変数に何も割り当てないため、実際には何も返さないように見えますが、省略したコードに存在する可能性があります。

また、変数を括弧で囲む必要がないため、ステートメントの先頭は次のようにする必要があります。

CREATE PROCEDURE division_price_info_heatmap 
  @comp_id INT,
  @compe_id INT, 
  @Division_id INT OUTPUT, 
  @Division_name VARCHAR(20) OUTPUT, 
  @final_shipping_price DECIMAL(11,2) OUTPUT
AS
于 2013-10-17T10:56:19.377 に答える
0

2 つのパラメーターを渡しますが、プロシージャーにはさらに多くのパラメーターが必要です。実行コマンドは次のとおりです。

DECLARE @Division_id INT, @Division_name VARCHAR(20), @final_shipping_price DECIMAL(11,2)
EXEC division_price_info_heatmap 1,2,@Division_id OUT,@Division_name OUT, @final_shipping_price OUT

または、手順を変更できます。

create PROCEDURE division_price_info_heatmap (@comp_id INT,
@compe_id INT, 
@Division_id INT = NULL out, 
@Division_name VARCHAR(20) = NULL out, 
@final_shipping_price DECIMAL(11,2) = NULL out)
AS
...
于 2013-10-17T10:59:30.563 に答える