我嘗試寫入SP以將值插入相關表中。我有錯誤消息:存儲過程插入到相關表中
"Cannot insert the value NULL into column 'marka_id', table 'env.dbo.Marka'; column does not allow nulls. INSERT fails.
Cannot insert the value NULL into column 'model_id', table 'env.dbo.Model'; column does not allow nulls. INSERT fails.
Cannot insert the value NULL into column 'f_id', table 'env.dbo.Firma'; column does not allow nulls. INSERT fails.
Cannot insert the value NULL into column 'sira_no', table 'env.dbo.Ana'; column does not allow nulls. INSERT fails.
The statement has been terminated.
The statement has been terminated.
The statement has been terminated.
The statement has been terminated."
這裏的存儲過程:
use env
go
create procedure [SP$Ekle](
@marka_adi nvarchar(30) = NULL,
@model_adi nvarchar(30) = NULL,
@f_adi nvarchar(50) = NULL,
@adres nvarchar(20) = NULL,
@tel nvarchar(20) = NULL,
@seri_no nvarchar(30) = NULL,
@kullanici_adi nvarchar(50) = NULL,
@link nvarchar(50) = NULL,
@aciklama nvarchar(50) = NULL,
@sira_no int output
)
as
begin
set nocount on
DECLARE
@marka_id int,
@model_id int,
@f_id int
begin
INSERT INTO Marka(marka_adi) VALUES(@marka_adi);
SET @marka_id = (SELECT marka_id FROM Marka WHERE marka_adi = @marka_adi);
INSERT INTO Model(marka_id,model_adi) VALUES(@marka_id,@model_adi);
SET @model_id = (SELECT @model_id FROM Model WHERE model_adi = @model_adi);
INSERT INTO Firma(f_adi,adres,tel) VALUES (@f_adi,@adres,@tel);
SET @f_id = (SELECT f_id FROM Firma WHERE f_adi= @f_adi AND adres = @adres AND tel = @tel);
INSERT INTO Ana(seri_no,kullanici_adi,link,aciklama,marka_id,model_id,f_id) VALUES (@seri_no,@kullanici_adi,@link,@aciklama,@marka_id,@model_id,@f_id);
SELECT @sira_no = SCOPE_IDENTITY();
end
set nocount off
end
go
從C#調用:
cmd.CommandText = "SP$Ekle";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@marka_adi", TextBox1.Text));
cmd.Parameters.Add(new SqlParameter("@model_adi", TextBox2.Text));
cmd.Parameters.Add(new SqlParameter("@f_adi", TextBox3.Text));
cmd.Parameters.Add(new SqlParameter("@adres", TextBox4.Text));
cmd.Parameters.Add(new SqlParameter("@tel", TextBox5.Text));
cmd.Parameters.Add(new SqlParameter("@seri_no", TextBox6.Text));
cmd.Parameters.Add(new SqlParameter("@kullanici_adi", TextBox7.Text));
cmd.Parameters.Add(new SqlParameter("@link", TextBox8.Text));
cmd.Parameters.Add(new SqlParameter("@aciklama", TextBox9.Text));
cmd.Parameters.Add(new SqlParameter("@sira_no", SqlDbType.Int)).Direction = ParameterDirection.Output;
我設置這些身份。現在它給出了這個錯誤:子查詢返回了多個值。當子查詢遵循=,!=,<, <= , >,> =或當子查詢用作表達式時,這是不允許的。 子查詢返回的值超過1。當子查詢遵循=,!=,<, <= , >,> =或當子查詢用作表達式時,這是不允許的。 – user3318923
我編輯了我的答案來解決您的問題。 – kmacdonald