整理sqlserver 级联更新和删除 c#调用存储过程返回值

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

整理一下级联更新和删除 c#调用返回值

use master 
go 
IF exists( select  1 from  sysdatabases where  name= 'temp' )
BEGIN  
     DROP DATABASE temp
END
create database temp
go
use temp
go
--drop table  ProductInfo
create table ProductInfo
(
     ProductId int   primary key ,
     ProductName varchar(20),   
)
  
create table ProductDetails
(
     id int  identity(1,1) primary key,
     num varchar(100) ,
     ProductId int ,
     foreign key (ProductId) references ProductInfo(ProductId) on  delete cascade on  update cascade
)
  
insert ProductInfo values (1, 'Think' )
insert ProductInfo values(2, 'TCL' )
insert ProductInfo values(3, 'HTC' )
  
insert ProductDetails values( 'T420' ,1)
insert ProductDetails values( 'Xo1' ,1)
insert ProductDetails values( 'TVoo1' ,2)
insert ProductDetails values( 'TPhone' ,2)
insert ProductDetails values( 'One' ,3)
insert ProductDetails values( 'Buffer' ,3)
 
  
 
 
alter table 表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on  delete cascade --删除
on  update cascade --更新
 
--查看现有数据
select  * from  ProductInfo
select  * from  ProductDetails
 
--更改
update ProductInfo set  ProductId=5  where  ProductName= 'Think'
select  * from  ProductInfo
select  * from  ProductDetails
 
--删除
delete from  ProductInfo where  ProductId=5
select  * from  ProductInfo
select  * from  ProductDetails

  

第一种方法:
C#代码:
protected  void  btnBack_Click( object  sender, EventArgs e)
{
         //调用存储过程
         stringconStr=ConfigurationManager.ConnectionStrings[ "NorthwindConnectionString" ].ToString();
         SqlConnection conn = new  SqlConnection(conStr);
         SqlCommand cmd = new  SqlCommand();
         cmd.CommandText = "MyProc" ;
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Connection=conn;
         conn.Open();
         SqlParameter sp = new  SqlParameter( "@ID" , SqlDbType.Int);
         sp.Value = int .Parse( "3" );
         cmd.Parameters.Add(sp);
  
         //定义输出参数
         SqlParameter returnValue = new  SqlParameter( "@returnValue" , SqlDbType.Int);
         returnValue.Direction = ParameterDirection.ReturnValue;
         cmd.Parameters.Add(returnValue);
         cmd.ExecuteNonQuery();       
         conn.Close();
  
}
存储过程如下:
create procedure MyProc
(
      @ID int
)
as
  
  return  1
  
 
go
注意,( return )这种方式 只能返加数值类型
  
第二种方法:
protected  void  btnBack_Click( object  sender, EventArgs e)
{
         //调用存储过程
         string  conStr = System.Configuration.ConfigurationManager.ConnectionStrings[ "NorthwindConnectionString" ].ToString();
         SqlConnection conn = new  SqlConnection(conStr);
         SqlCommand cmd = new  SqlCommand();
         cmd.CommandText = "MyProc" ;
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Connection=conn;
         conn.Open();
         SqlParameter sp = new  SqlParameter( "@ID" , SqlDbType.Int);
         sp.Value = int .Parse( "3" );
         cmd.Parameters.Add(sp);
  
         //定义输出参数
         sp = new  SqlParameter( "@outputValue" , SqlDbType.NVarChar,50);
         sp.Direction = ParameterDirection.Output;
         cmd.Parameters.Add(sp);
         cmd.ExecuteNonQuery();
         
         conn.Close();
  
     }
  
存储过程如下:
alter procedure MyProc
(
      @ID int ,
      @outputValue nvarchar(50) output
  
)
as
  Select @outputValue= 'aa'
go

本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3254982.html ,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
6月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
146 1
|
6月前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
303 1
|
6月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
126 3
|
6月前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
347 1
|
2月前
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
26天前
|
存储 关系型数据库 MySQL
【YashanDB知识库】MySQL返回结果集的存储过程的改写方法
本文介绍了将MySQL存储过程改写至YashanDB的解决方案。由于MySQL存储过程可直接返回结果集,而YashanDB需通过返回SYS_REF_CURSOR的函数实现类似功能,因此需要对代码进行转换。示例中展示了如何将MySQL存储过程`proc1`改写为YashanDB函数,并调整JDBC应用代码以适配REF_CURSOR输出参数,从而正确获取查询结果。此方法确保了跨数据库场景下的兼容性与功能性。
|
5月前
|
存储 SQL 关系型数据库
[MySQL]存储过程
本文介绍了存储过程的概念、优点和缺点,并通过具体示例详细讲解了存储过程的创建、使用和调用方法。此外,还介绍了游标的定义和使用,帮助读者更好地理解和应用存储过程。文章旨在为读者提供一个学习和使用存储过程的实用指南。
505 18
[MySQL]存储过程
|
5月前
|
存储 SQL NoSQL
|
6月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
86 5
|
6月前
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
123 3