SQL存储过程需要参数,该参数未提供。 [英] SQL Stored Procedure expects parameter, which was not supplied.
本文介绍了SQL存储过程需要参数,该参数未提供。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的存储过程:
创建 PROCEDURE insertEmp( @ Id int output , @ Name varchar ( 50 ), @ Sal money ) AS
开始
插入 进入 EMP1(Empname,EmpSalary)值( @ Name , @Sal )
select @Id = @@ Identity
END
使用系统;
使用 System.Collections.Generic;
使用 System.ComponentModel;
使用 System.Data;
使用 System.Drawing;
使用 System.Linq;
使用 System.Text;
使用 System.Windows.Forms;
使用 System.Data.SqlClient;
命名空间 SP2
{
public partial class Form1:Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click( object sender,EventArgs e)
{
SqlConnection con = new SqlConnection(helpercs.connectionstring);
SqlCommand cmd = new SqlCommand( insertEmp ,con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parId,parName,parSalary;
parId = cmd.Parameters.Add( @ Id,SqlDbType.Int);
parId.Direction = ParameterDirection.Output;
parName = cmd.Parameters.Add( @ name,SqlDbType.VarChar,< span class =code-digit> 50 );
parSalary = cmd.Parameters.Add( @ salary,SqlDbType.Money);
parName.Value = int .Parse(txtname.Text);
parSalary.Value = int .Parse(txtsalary.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
txtid.Text = parId.Value.ToString();
}
}
}
请帮助我,我试了大约2个小时。
解决方案
parSalary = cmd.Parameters.Add( @薪水,SqlDbType.Money);
应该是
parSalary = cmd.Parameters .Add( @ Sal,SqlDbType.Money);
当您将@Sal
钱传递给存储过程时。
两个参数( C#& SQL SP')应匹配。
错误可能因为此转换而改变了这个以及上述参数更改。
< pre lang =cs> parName.Value = int .Parse(txtname.Text);
parSalary.Value = int .Parse(txtsalary.Text);
到
parName.Value = txtname.Text;
parSalary.Value = int .Parse(txtsalary.Text);
here int.Parse返回int已分配给名称字段,该字段为Varchar类型。
This is my stored procedure:
create PROCEDURE insertEmp(@Id int output,@Name varchar(50),@Sal money) AS
begin
insert into EMP1(Empname,EmpSalary)values (@Name,@Sal)
select @Id=@@Identity
END
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace SP2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(helpercs.connectionstring);
SqlCommand cmd = new SqlCommand("insertEmp", con);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameter parId, parName, parSalary;
parId = cmd.Parameters.Add("@Id", SqlDbType.Int);
parId.Direction = ParameterDirection.Output;
parName = cmd.Parameters.Add("@name",SqlDbType.VarChar,50);
parSalary = cmd.Parameters.Add("@salary",SqlDbType.Money);
parName.Value =int.Parse(txtname.Text);
parSalary.Value =int.Parse( txtsalary.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
txtid.Text = parId.Value.ToString();
}
}
}
Please help me, I tried for about 2 hours.
解决方案
parSalary = cmd.Parameters.Add("@salary",SqlDbType.Money);
should be
parSalary = cmd.Parameters.Add("@Sal",SqlDbType.Money);
As you are passing@Sal
money to your stored procedure.
Both parameters (C# & SQL SP''s) should match.
the error could because of this conversion change this in addition to the above said parameter change.
parName.Value =int.Parse(txtname.Text); parSalary.Value =int.Parse( txtsalary.Text);
to
parName.Value =txtname.Text; parSalary.Value =int.Parse( txtsalary.Text);
here int.Parse returns int was assigned to the name field which is Varchar type.
这篇关于SQL存储过程需要参数,该参数未提供。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文