0
を取得しなければならないところ、私はこれは私がこれの結果はSQL:私は私のコードで間違って何4.
Lastname Firstname Dateofhire Salary Bonus
Bernstein Michael 1991-05-25 98000.00 19600.00
ある
CREATE PROCEDURE Sp_bonus @bonus INT,
@lastname VARCHAR(50) out,
@firstname VARCHAR(50) out,
@dateofhire DATE out,
@salary SMALLMONEY out,
@bonusmoney SMALLMONEY out
AS
IF @bonus = 20
BEGIN
SELECT @lastname = lastname,
@firstname = firstname,
@dateofhire = dateofhire,
@salary = salary,
@bonusmoney = (salary * (@bonus) * 0.01)
FROM salesreps
WHERE dateofhire < '12/31/2000'
END
IF @bonus = 5
BEGIN
SELECT @lastname = lastname,
@firstname = firstname,
@dateofhire = dateofhire,
@salary = salary,
@bonusmoney = (salary * (@bonus) * 0.01)
FROM salesreps
WHERE dateofhire >= '12/31/2000'
END
DECLARE @lastname VARCHAR(50),
@firstname VARCHAR(50),
@dateofhire DATE,
@salary SMALLMONEY,
@bonusmoney SMALLMONEY
EXEC Sp_bonus
@bonus=20,
@[email protected] out,
@[email protected] out,
@[email protected] out,
@[email protected] out,
@[email protected] out
SELECT [email protected],
[email protected],
[email protected],
[email protected],
[email protected]
を使用していたコードで出力として1行しか取得しています
ここには3つのレコードがあります。私はコード内で何が間違っているのか理解していないのは、私に1つの出力行しか与えていないということです。私はどこのロジックが正しいかをチェックし、ボーナスの計算も正しいとしています。
唯一の問題
は、私はボーナス= 20またはボーナス= 5任意の提案を使用するかどうか、それは私に、出力の一行のみを示すことです。
私が見る最初の問題は、実際にコードの書式設定を使用できることです。第2の問題は大きな問題です。あなた自身の内部でプロシージャを実行していることです。 ISO yyyy-mm-dd形式の代わりにカルチャ固有の日付形式を使用しています。最後に、sp_接頭辞を使用しています。これはMSがシステム・プロシージャのために予約しているので避けてください。 http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –
私はhttp://www.dpriver.com/pp/sqlformat.htmであなたのコードをフォーマットしようとしていますが、あなたは1つの 'そこに –