C#调用表值参数传输存储过程。
先在数据库建立表值类型:
CREATE TYPE [dbo].[Edit_zply] AS TABLE(
[公司] [varchar](10) NULL,
[工号] [varchar](10) NULL,
[姓名] [varchar](50) NULL,
[原招聘代码] [varchar](10) NULL,
[原招聘名称] [varchar](50) NULL,
[新招聘代码] [varchar](10) NULL,
[新招聘名称] [varchar](50) NULL
)
GO
在存储过程里使用该表值类型:
ALTER PROCEDURE [dbo].[HR_Edit_zply]
-- Add the parameters for the stored procedure here
@zply Edit_zply READONLY
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @company varchar(10),@count int
select @count=COUNT(*) from @zply where 工号 = '200901805'
raiserror('%d',16,1,@count)
update b set b.zplyID = a.新招聘代码,b.zplyName = a.新招聘名称
from @zply a
left join sys_tx_employee b on a.工号= b.userID and a.公司= b.company_FK
END
C#传值:
SqlConnection conn = new SqlConnection(sqlconn);
conn.Open();
try
{
using (SqlCommand cmd = new SqlCommand(@"dbo.HR_Edit_zply", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
//关键是类型
SqlParameter parameter = new SqlParameter("@zply", SqlDbType.Structured);
//必须指定表类型名
parameter.TypeName = "dbo.Edit_zply";
//赋值
parameter.Value = sesstab;
cmd.Parameters.Add(parameter);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
XtraMessageBox.Show("保存失败:"+ex.Message);
return;
}
finally
{
conn.Close();
XtraMessageBox.Show("保存成功!");
}