惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 江宇旋

查询反模式 - GroupBy、HAVING的理解 T-SQL 公用表表达式(CTE) SQL语句 - 嵌套查询 SQL 操作结果集 -并集、差集、交集、结果集排序 - 江宇旋 疑难杂症 - SQL语句整理 SQL查询 - 表连接 SQL语句 - 数据操作 SQL语句 - 基本查询 SQL Server 事务语法 SQL 存储过程入门(事务)(四) SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因 SQL Server 的事务和锁(二)-Range S-S锁 SQL Server 的事务和锁(一) winform窗体间传值 C#获取存储过程的 Return返回值和Output输出参数值 SQL函数说明大全 - 江宇旋 C#操作字符串方法总结<转> 车辆售票坐位图 C#操作SQL Server通用类
C#调用存储过程带输出参数或返回值
江宇旋 · 2016-01-30 · via 博客园 - 江宇旋
  1. CREATE PROCEDURE [dbo].[GetNameById]  
  2.  @studentid varchar(8),  
  3.  @studentname nvarchar(50) OUTPUT  
  4. AS  
  5. BEGIN  
  6.  SELECT @studentname=studentname FROM student  
  7.     WHERE studentid=@studentid  
  8.  if @@Error<>0  
  9.   RETURN -1  
  10.  else   
  11.   RETURN 0   
  12. END  
  13.   
  14.   
  15. using (SqlConnection conn = new SqlConnection(connStr))  
  16. {  
  17.     try  
  18.     {  
  19.         SqlCommand cmd = new SqlCommand("GetNameById", conn);  
  20.         cmd.CommandType = CommandType.StoredProcedure;  
  21.         cmd.Parameters.AddWithValue("@studentid", "09888888");  
  22.         SqlParameter parOutput =cmd.Parameters.Add("@studentname", SqlDbType.NVarChar, 50);  
  23.         parOutput.Direction = ParameterDirection.Output;  
  24.         SqlParameter parReturn = new SqlParameter("@return", SqlDbType.Int);  
  25.         parReturn.Direction = ParameterDirection.ReturnValue;   
  26.         cmd.Parameters.Add(parReturn);  
  27.         conn.Open();  
  28.         cmd.ExecuteNonQuery();  
  29.         MessageBox.Show(parOutput.Value.ToString());   
  30.         MessageBox.Show(parReturn.Value.ToString());  
  31.     }  
  32.     catch (System.Exception ex)  
  33.     {  
  34.         MessageBox.Show(ex.Message);  
  35.     }  
  36. }  
  37.   
  38.   
  39. Create PROCEDURE AddOrderTran  
  40.     @country nvarchar(100),  
  41.     @adds nvarchar(100),  
  42.     @ynames nvarchar(100),  
  43.     @pids nvarchar(100),  
  44.     @cellp nvarchar(100),  
  45.     @cphone nvarchar(100),  
  46.     @amounts nvarchar(100),  
  47.     @cartnumber nvarchar(100)  
  48. as  
  49.     Declare @id int  
  50.     BEGIN TRANSACTION     
  51.         insert into Orders(Order_Country,Order_Adress,Order_UserName,Order_PostID,Cells,Order_Phone,Total_pay,CartNumber,IsPay)   
  52.             values (@country,@adds,@ynames,@pids,@cellp,@cphone,@amounts,@cartnumber,'0')  
  53.         Select @id=@@identity  
  54.         insert into Orders_Item (OrderNumber,ProductsID,Products_Color,Products_Price,Order_Qty,Item_Total)   
  55.             select  @id,Carts_Item.ProductsID,Carts_Item.Products_Color,Carts_Item.Products_Price,Carts_Item.Item_Qty,Carts_Item.Total_Pay   
  56.             from Carts_Item where Carts_Item.CartNumber=@cartnumber     
  57.         delete Carts_Item where CartNumber=@cartnumber  
  58.         IF @@error <> 0  --发生错误  
  59.         BEGIN  
  60.             ROLLBACK TRANSACTION  
  61.             RETURN 0  
  62.         END  
  63.         ELSE  
  64.         BEGIN  
  65.             COMMIT TRANSACTION  
  66.             RETURN @id    --执行成功  
  67.     END  
  68.  
  69.  
  70.  
  71.         #region 执行存储过程  
  72.   
  73.         SqlParameter[] param = new SqlParameter[]     
  74.           {     
  75.               new SqlParameter("@country",country),    
  76.               new SqlParameter("@adds",adds),     
  77.               new SqlParameter("@ynames",ynames),     
  78.               new SqlParameter("@pids", pids),     
  79.               new SqlParameter("@cellp",cellp),    
  80.               new SqlParameter("@cphone", cphone),  
  81.               new SqlParameter("@amounts",amounts),  
  82.               new SqlParameter("@cartnumber",cartnumber),  
  83.               new SqlParameter("@return",SqlDbType.Int)  
  84.           };  
  85.         param[8].Direction = ParameterDirection.ReturnValue;  
  86.         MSCL.SqlHelper.RunProcedure("AddOrderTran", param);  
  87.         object obj = param[8].Value; 
  88.   
  89.   
  90.         
  91.         
  92.         
  93.         
  94.         
  95.         
  96.   
  97.         
  98.         
  99.         
  100.   
  101.         
  102.         
  103.         
  104.   
  105.         
  106.         
  107.         
  108.   
  109.         
  110.         
  111.         
  112.   
  113.         
  114.         
  115.         
  116.   
  117.         
  118.         
  119.         
  120.   
  121.         
  122.         
  123.         
  124.   
  125.         
  126.         
  127.         
  128.   
  129.         
  130.         
  131.         
  132.   
  133.         
  134.   
  135.         
  136.         
  137.         
  138.         
  139.         
  140.         
  141.         
  142.         
  143.         
  144.         
  145.         
  146.   
  147.   
  148.   
  149. 本文的数据库用的是sql server自带数据Northwind   
  150.    
  151. 1.只返回单一记录集的存储过程  
  152.   
  153. SqlConnection sqlconn = new SqlConnection(conn);  
  154. SqlCommand cmd = new SqlCommand();  
  155. cmd.Connection = sqlconn;  
  156. cmd.CommandText = "Categoriestest1";  
  157. cmd.CommandType = CommandType.StoredProcedure;  
  158.   
  159. SqlDataAdapter dp = new SqlDataAdapter(cmd);  
  160. DataSet ds = new DataSet();  
  161. dp.Fill(ds);  
  162. GridView1.DataSource = ds;  
  163. GridView1.DataBind();  
  164.   
  165.    
  166.   
  167. 存储过程Categoriestest1  
  168. CREATE PROCEDURE Categoriestest1   
  169.  AS  
  170.  select *   
  171.  from  Categories  
  172.  GO  
  173.   
  174.   
  175.   
  176. 2. 没有输入输出的存储过程  
  177. SqlConnection sqlconn = new SqlConnection(conn);  
  178. SqlCommand cmd = new SqlCommand();  
  179.   
  180. cmd.Connection = sqlconn;  
  181. cmd.CommandText = "Categoriestest2";  
  182. cmd.CommandType = CommandType.StoredProcedure;  
  183. sqlconn.Open();  
  184. Label1.Text = cmd.ExecuteNonQuery().ToString();  
  185. sqlconn.Close();  
  186.   
  187.   
  188. 存储过程Categoriestest2  
  189.   
  190. CREATE PROCEDURE Categoriestest2  AS  
  191.  insert into dbo.Categories   
  192.  (CategoryName,[Description],[Picture])  
  193.  values ('test1','test1',null)  
  194.  GO  
  195.   
  196.    
  197.   
  198. 3. 有返回值的存储过程  
  199. SqlConnection sqlconn = new SqlConnection(conn);  
  200.          SqlCommand cmd = new SqlCommand();  
  201.          cmd.Connection = sqlconn;  
  202.          cmd.CommandText = "Categoriestest3";  
  203.          cmd.CommandType = CommandType.StoredProcedure;  
  204.          
  205.         IDataParameter[] parameters = {  
  206.                  new SqlParameter("rval", SqlDbType.Int,4)  
  207.              };  
  208.          
  209.         parameters[0].Direction = ParameterDirection.ReturnValue;  
  210.          
  211.         cmd.Parameters.Add(parameters[0]);  
  212.   
  213.          sqlconn.Open();  
  214.          
  215.         Label1.Text = cmd.ExecuteNonQuery().ToString();  
  216.          sqlconn.Close();  
  217.          
  218.         Label1.Text += "-" + parameters[0].Value.ToString() ;  
  219.   
  220.   
  221. 存储过程Categoriestest3  
  222.   
  223. CREATE PROCEDURE Categoriestest3  
  224.  AS  
  225.  insert into dbo.Categories   
  226.  (CategoryName,[Description],[Picture])  
  227.  values ('test1','test1',null)  
  228. return @@rowcount  
  229.  GO  
  230.   
  231. 4. 有输入参数和输出参数的存储过程  
  232.   
  233.  SqlConnection sqlconn = new SqlConnection(conn);  
  234.          SqlCommand cmd = new SqlCommand();  
  235.          cmd.Connection = sqlconn;  
  236.          cmd.CommandText = "Categoriestest4";  
  237.          cmd.CommandType = CommandType.StoredProcedure;  
  238.          
  239.         IDataParameter[] parameters = {  
  240.                  new SqlParameter("@Id", SqlDbType.Int,4) ,  
  241.                  new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,  
  242.              };  
  243.          
  244.         parameters[0].Direction = ParameterDirection.Output;  
  245.         parameters[1].Value = "testCategoryName";  
  246.          
  247.         cmd.Parameters.Add(parameters[0]);  
  248.          cmd.Parameters.Add(parameters[1]);  
  249.   
  250.          sqlconn.Open();  
  251.          
  252.         Label1.Text = cmd.ExecuteNonQuery().ToString();  
  253.          sqlconn.Close();  
  254.          
  255.         Label1.Text += "-" + parameters[0].Value.ToString() ;  
  256.   
  257. 存储过程Categoriestest4        
  258.   
  259. CREATE PROCEDURE Categoriestest4  
  260.  @id int output,  
  261.  @CategoryName nvarchar(15)  
  262.  AS  
  263.  insert into dbo.Categories   
  264.  (CategoryName,[Description],[Picture])  
  265.  values (@CategoryName,'test1',null)  
  266. set  @id = @@IDENTITY  
  267.  GO  
  268.   
  269.    
  270.   
  271. 5. 同时具有返回值、输入参数、输出参数的存储过程  
  272.   
  273.  SqlConnection sqlconn = new SqlConnection(conn);  
  274.          SqlCommand cmd = new SqlCommand();  
  275.          cmd.Connection = sqlconn;  
  276.          cmd.CommandText = "Categoriestest5";  
  277.          cmd.CommandType = CommandType.StoredProcedure;  
  278.          
  279.         IDataParameter[] parameters = {  
  280.                  new SqlParameter("@Id", SqlDbType.Int,4) ,  
  281.                  new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,  
  282.                  new SqlParameter("rval", SqlDbType.Int,4)  
  283.              };  
  284.          
  285.         parameters[0].Direction = ParameterDirection.Output;       
  286.         parameters[1].Value = "testCategoryName";                  
  287.         parameters[2].Direction = ParameterDirection.ReturnValue;  
  288.         
  289.         cmd.Parameters.Add(parameters[0]);  
  290.          cmd.Parameters.Add(parameters[1]);  
  291.          cmd.Parameters.Add(parameters[2]);  
  292.   
  293.          sqlconn.Open();  
  294.          
  295.         Label1.Text = cmd.ExecuteNonQuery().ToString();  
  296.          sqlconn.Close();  
  297.          
  298.         Label1.Text += "-" + parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();  
  299.   
  300.  存储过程Categoriestest5  
  301.   
  302. CREATE PROCEDURE Categoriestest5  
  303.  @id int output,  
  304.  @CategoryName nvarchar(15)  
  305.  AS  
  306.  insert into dbo.Categories   
  307.  (CategoryName,[Description],[Picture])  
  308.  values (@CategoryName,'test1',null)  
  309. set  @id = @@IDENTITY  
  310. return @@rowcount  
  311.  GO  
  312.   
  313.    
  314.  6. 同时返回参数和记录集的存储过程  
  315.     SqlConnection sqlconn = new SqlConnection(conn);  
  316.     SqlCommand cmd = new SqlCommand();  
  317.     cmd.Connection = sqlconn;  
  318.     cmd.CommandText = "Categoriestest6";  
  319.     cmd.CommandType = CommandType.StoredProcedure;  
  320.          
  321.         IDataParameter[] parameters = {  
  322.                  new SqlParameter("@Id", SqlDbType.Int,4) ,  
  323.                  new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,  
  324.                  new SqlParameter("rval", SqlDbType.Int,4)                   
  325.             };  
  326.          
  327.     parameters[0].Direction = ParameterDirection.Output;        
  328.     parameters[1].Value = "testCategoryName";                   
  329.     parameters[2].Direction = ParameterDirection.ReturnValue;   
  330.     
  331.     cmd.Parameters.Add(parameters[0]);  
  332.     cmd.Parameters.Add(parameters[1]);  
  333.     cmd.Parameters.Add(parameters[2]);  
  334.   
  335.     SqlDataAdapter dp = new SqlDataAdapter(cmd);  
  336.     DataSet ds = new DataSet();  
  337.     
  338.     dp.Fill(ds);  
  339.     
  340.     GridView1.DataSource = ds.Tables[0];  
  341.     GridView1.DataBind();  
  342.   
  343.     Label1.Text = "";  
  344.     
  345.     Label1.Text +=  parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();  
  346.   
  347. 存储过程Categoriestest6  
  348.   
  349. CREATE PROCEDURE Categoriestest6  
  350.  @id int output,  
  351.  @CategoryName nvarchar(15)  
  352.  AS  
  353.  insert into dbo.Categories   
  354.  (CategoryName,[Description],[Picture])  
  355.  values (@CategoryName,'test1',null)  
  356. set  @id = @@IDENTITY  
  357.  select * from Categories  
  358. return @@rowcount  
  359.  GO  
  360.   
  361.   
  362. 7. 返回多个记录集的存储过程  
  363.   
  364. SqlConnection sqlconn = new SqlConnection(conn);  
  365. SqlCommand cmd = new SqlCommand();  
  366.   
  367. cmd.Connection = sqlconn;  
  368. cmd.CommandText = "Categoriestest7";  
  369. cmd.CommandType = CommandType.StoredProcedure;  
  370.   
  371. SqlDataAdapter dp = new SqlDataAdapter(cmd);  
  372. DataSet ds = new DataSet();  
  373. dp.Fill(ds);  
  374. GridView1.DataSource = ds.Tables[0];  
  375. GridView1.DataBind();  
  376. GridView2.DataSource = ds.Tables[1];  
  377. GridView2.DataBind();  
  378.   
  379.    
  380. 存储过程Categoriestest7  
  381.   
  382. CREATE PROCEDURE Categoriestest7  
  383.  AS  
  384.  select * from Categories  
  385.  select * from Categories  
  386.  GO  

posted on 2016-01-30 03:31  江宇旋  阅读(2855)  评论()    收藏  举报