1 c#传递表变量去存储数据的例子
1 c# 代码
using (SqlConnection con = GetEditorConnection())
{
con.Open();
using (SqlCommand command = con.CreateCommand())
{
SqlTransaction st = con.BeginTransaction();
command.Transaction = st;
try
{
command.CommandText = procedureName;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("p_Source", dt));
num = command.ExecuteNonQuery();
st.Commit();
}
catch (Exception ex)
{
Log.writeLog("save data error and relationship function is executeProcedure!");
st.Rollback();
throw new Exception(ex.Message);
}
}
con.Close();
}
2 存储过程实例:
-- Set the database where the stored procedure is located
USE RawData
GO
-- Drop older version if it exists
IF OBJECTPROPERTY(OBJECT_ID(N'dbo.addEDISecurityMaster'), N'IsProcedure') = 1
DROP PROCEDURE dbo.addEDISecurityMaster
GO
IF EXISTS(SELECT * FROM sys.types WHERE name = 'tp_EDISecurityMaster')
DROP TYPE tp_EDISecurityMaster
GO
CREATE TYPE dbo.tp_EDISecurityMaster AS TABLE
(
ScexhID int not null,
SedolID int null,
Actflag char(1) null,
Changed smalldatetime null,
Created smalldatetime null,
SecID int null,
IssID int null,
ISIN char(12) null,
USCode char(9) null,
IssuerName char(70) null,
CntryofIncorp char(2) null,
SIC char(10) null,
CIK char(10) null,
IndusID int null,
SectyCD char(3) null,
SecurityDesc char(70) null,
ParValue decimal(14,5),
PVCurrency char(3) null,
StatusFlag char(1) null,
PrimaryExchgCD char(6) null,
Sedol char(7) null,
SedolCurrency char(2) null,
Defunct bit null,
SedolRegCntry char(2) null,
StructCD varchar(10) null,
ExchgCntry char(2) null,
ExchgCD char(6) null,
Mic char(4) null,
Micseg char(4) null,
LocalCode varchar(50) null,
ListStatus char(1) null,
ListDate smalldatetime null,
OriginalFileName varchar(50) null
)
GO
GRANT EXECUTE ON TYPE::dbo.tp_EDISecurityMaster TO public
GO
-- Author: bing mi
-- Create date: 2017-03-06
-- Revisions:
--
CREATE PROCEDURE dbo.addEDISecurityMaster
@p_Source tp_EDISecurityMaster READONLY
AS
SET NOCOUNT ON
DECLARE @l_Err INT,
@l_Msg VARCHAR(500),
@l_Id NVARCHAR(15),
@l_ProcName VARCHAR(30),
@l_ProcDB VARCHAR(30)
-- Initialize error handle-related constants
SET @l_Id = ''
SET @l_ProcName = OBJECT_NAME (@@PROCID)
SET @l_ProcDB = DB_NAME()
-- Business logic
BEGIN TRY
MERGE INTO dbo.EDISecurityMaster dst
USING @p_Source src ON dst.ScexhID = src.ScexhID
WHEN MATCHED THEN
UPDATE SET
dst.SedolID=src.SedolID,
dst.Actflag=src.Actflag,
dst.Changed=src.Changed,
dst.Created=src.Created,
dst.SecID=src.SecID,
dst.IssID=src.IssID,
dst.ISIN=src.ISIN,
dst.USCode=src.USCode,
dst.IssuerName=src.IssuerName,
dst.CntryofIncorp=src.CntryofIncorp,
dst.SIC=src.SIC,
dst.CIK=src.CIK,
dst.IndusID=src.IndusID,
dst.SectyCD=src.SectyCD,
dst.SecurityDesc=src.SecurityDesc,
dst.ParValue=src.ParValue,
dst.PVCurrency=src.PVCurrency,
dst.StatusFlag=src.StatusFlag,
dst.PrimaryExchgCD=src.PrimaryExchgCD,
dst.Sedol=src.Sedol,
dst.SedolCurrency=src.SedolCurrency,
dst.Defunct=src.Defunct,
dst.SedolRegCntry=src.SedolRegCntry,
dst.StructCD=src.StructCD,
dst.ExchgCntry=src.ExchgCntry,
dst.ExchgCD=src.ExchgCD,
dst.Mic=src.Mic,
dst.Micseg=src.Micseg,
dst.LocalCode=src.LocalCode,
dst.ListStatus=src.ListStatus,
dst.ListDate=src.ListDate,
dst.OriginalFileName=src.OriginalFileName
WHEN NOT MATCHED BY TARGET THEN
INSERT
( ScexhID,
SedolID,
Actflag,
Changed,
Created,
SecID,
IssID,
ISIN,
USCode,
IssuerName,
CntryofIncorp,
SIC,
CIK,
IndusID,
SectyCD,
SecurityDesc,
ParValue,
PVCurrency,
StatusFlag,
PrimaryExchgCD,
Sedol,
SedolCurrency,
Defunct,
SedolRegCntry,
StructCD,
ExchgCntry,
ExchgCD,
Mic,
Micseg,
LocalCode,
ListStatus,
ListDate,
OriginalFileName
)
values
(src.ScexhID,
src.SedolID,
src.Actflag,
src.Changed,
src.Created,
src.SecID,
src.IssID,
src.ISIN,
src.USCode,
src.IssuerName,
src.CntryofIncorp,
src.SIC,
src.CIK,
src.IndusID,
src.SectyCD,
src.SecurityDesc,
src.ParValue,
src.PVCurrency,
src.StatusFlag,
src.PrimaryExchgCD,
src.Sedol,
src.SedolCurrency,
src.Defunct,
src.SedolRegCntry,
src.StructCD,
src.ExchgCntry,
src.ExchgCD,
src.Mic,
src.Micseg,
src.LocalCode,
src.ListStatus,
src.ListDate,
src.OriginalFileName
);
END TRY
-- Exception handle
BEGIN CATCH
-- Rollback transaction if needed
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRAN
END
-- Log error message
SET @l_Msg = 'Number: ' + CONVERT(VARCHAR, ERROR_NUMBER()) + CHAR(10) +
'Line: ' + CONVERT(VARCHAR, ERROR_LINE()) + CHAR(10) +
'Severity: ' + CONVERT(VARCHAR, ERROR_SEVERITY()) + CHAR(10) +
'State: ' + CONVERT(VARCHAR, ERROR_STATE()) + CHAR(10) +
'Procedure: ' + ISNULL(ERROR_PROCEDURE(), '') + CHAR(10) +
'Message: ' + ERROR_MESSAGE()
SET @l_Err = ERROR_NUMBER()
-- Store error and raise error
EXECUTE dbo.sp_LogError @l_Err, @l_Msg, @l_Id, @l_ProcName, @l_ProcDB
RAISERROR(@l_Msg, 18, 1)
RETURN @l_Err
END CATCH
RETURN @@ERROR
GO
GRANT EXECUTE ON dbo.addEDISecurityMaster TO rl_DataUpload
GO
注意表参数顺序和c#里面传递过来的table列顺序一定要一样,列长度也要一样呀!
1 c#传递表变量去存储数据的例子的更多相关文章
- Python学习3——变量如何存储数据
数值类型:包括整型.浮点型 变量名字代表的是存储地址. num01 = 100 print(id(num01)) #输出变量num01存储的内存地址,输出的是十进制值 num02 = num01 pr ...
- 如何使用BMap.Point传递变量、存储数据?
在开发中使用到了百度地图进行开发,用于展示企业位置.由于数据量庞大,如果使用marker,将会造成界面卡顿,处理慢的问题. 在查看百度地图API示例是发现了海量点这个东西,还别说对于大数量的点加载起来 ...
- [BILL WEI]SQL 如何将查询到的列作为表名去查询数据
我们在做sql查询的时候,有时候需要将查询的列作为表名,去引用,然后再次查询 declare @table_name varchar(20) select @table_name=table_name ...
- SQLServer中临时表与表变量的区别分析(转)
在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永 ...
- SQL Server 临时表 Vs 表变量
开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点.这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和 ...
- SQLServer中临时表与表变量的区别分析【转】
在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永 ...
- [转]SQL Server中临时表与表变量的区别
[转]http://blog.csdn.net/skyremember/archive/2009/03/05/3960687.aspx 我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是 ...
- SQL Server中临时表与表变量的区别
我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量.在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候 ...
- sql server中的临时表、表变量和公用表表达式
在编写T-SQL语句的时候,SQL Server提供了三种方法临时存储某些结果集,分别是临时表.表变量和公用表表达式. 临时表 临时表需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户 ...
随机推荐
- Mysql 逗号分隔行列转换总结
方法一 存储过程实现: -- 修改结束符,防止在mysql命令行中默认分号直接运行 delimiter $$ -- 创建一个计算拆分后字符串的个数函数 drop function if exists ...
- LC 725. Split Linked List in Parts
Given a (singly) linked list with head node root, write a function to split the linked list into k c ...
- MOCK服务小结
前言: 说到mock,大家会想到单测中的mock,测试同学会想到httpmock服务等. mock的作用:程序运行过程中,设定过滤规则及返回值,来满足固定的数据解析,解决不容易构造或者获取的数据对象. ...
- Linux下四款常见远程工具比较
摘要:Linux远程可不像Windows下那么方便,主要是连接的速度.显示的画质不能令人满意(延迟.撕裂).本文只是说一下我用过的四款远程工具.Anydesk官网:https://anydesk.co ...
- Jedis的Publish/Subscribe功能的使用
redis内置了发布/订阅功能,可以作为消息机制使用.所以这里主要使用Jedis的Publish/Subscribe功能. 1.使用Spring来配置Jedis连接池 <!-- pool配置 - ...
- *Scala API - 并发编程
- Mysql——常用命令
查看版本:show variables like '%version%' 或者 select version() 是否开启binlog:show variables like 'log_bin ...
- koa2数据请求相关问题解决方案汇总
前端请求后端数据,难免会遇到如下几个问题: 1⃣️跨域 2⃣️post/get,其中post请求的方式又分为多种 3⃣️后端数据返回格式(上一篇已经有讨论过,这里不再赘述) 用koa2的话,如何解决这 ...
- Python 面向对象--继承,实现,依赖,关联,聚合,组合
一. 继承 继承指的是子类继承父类除私有内容以外的其他所有内容, 并且子类具有增加自己新内容的能力. 举例说明: class Animal: print("吃是动物的本能") cl ...
- element UI实现动态生成多级表头
一.效果图 二.封装两个组件,分别为DynamicTable.vue和TableColumn.vue,TableColumn.vue主要是使用递归来对表头进行循环生成 DynamicTable.vue ...