sql存储过程调用示例
1.配置文件:
<connectionStrings>
<add name="constr" connectionString="data source=127.0.0.1;initial catalog=test;user id=sa;password=123"/>
</connectionStrings>
2.代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con =new SqlConnection(constr))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.Add("@in_str", System.Data.SqlDbType.VarChar);
cmd.Parameters.Add("@out_str", System.Data.SqlDbType.NVarChar);
cmd.Parameters["@out_str"].Direction = System.Data.ParameterDirection.Output;
cmd.CommandText = "sp_test";
cmd.Parameters["@in_str"].Value = "input str";
cmd.Parameters["@out_str"].Value = "";
cmd.Parameters["@in_str"].Size =20;//此处如果没有赋值,那么就会按照最初给的值的大小来进行指定
cmd.Parameters["@out_str"].Size = 200;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
System.Data.DataTable dt = new System.Data.DataTable("table_name");
sda.Fill(dt);
Console.WriteLine("@in_st----{0}", cmd.Parameters["@in_str"]);
Console.WriteLine("@out_str---{0}", cmd.Parameters["@out_str"]);
if (dt!=null && dt.Rows.Count >0)
{
foreach (System.Data.DataRow item in dt.Rows)
{
string msg = string.Empty;
for (int i = 0; i < dt.Columns.Count; i++)
{
msg = msg + "---" + item[i].ToString();
}
Console.WriteLine(msg);
}
}
Console.ReadKey();
}
}
}
}
3.存储过程:
create PROCEDURE sp_test
@in_str VARCHAR(20),
@out_str NVARCHAR(200) OUTPUT
AS
BEGIN
BEGIN TRY
SET @in_str ='wo shi instr';
SET @out_str ='wo shi out_str'
IF not EXISTS(SELECT * FROM sys.objects WHERE type='U' AND name ='test_table')
BEGIN
CREATE TABLE test_table
(
id INT IDENTITY(1,1),
emp_no VARCHAR(20),
emp_name NVARCHAR(50)
)
DECLARE @index INT
SET @index =1;
--SELECT RAND(1)
WHILE(@index <50)
BEGIN
INSERT INTO dbo.test_table
( emp_no, emp_name )
VALUES (
CEILING(RAND()*100), -- emp_no - varchar(20) 1--100
FLOOR(RAND()*100) -- emp_name - nvarchar(50) 0--99
)
SET @index +=1;
END
END
SELECT * FROM dbo.test_table
END TRY
BEGIN CATCH
SET @out_str ='exception'+ERROR_MESSAGE();
PRINT @out_str
END CATCH
END
sql存储过程调用示例的更多相关文章
- SQL 存储过程调用存储过程
研究一个别人做的项目代码看到数据库里有一段存储过程调用存储过程的代码,原来的代码比较复杂. 于是自己打算写一个简单的例子学习一下. 一.首先创建了被需要被调用的存储过程. USE [MSPetShop ...
- sql 存储过程调用函数
/****************************************************************************** ** Name: usp_biz_Con ...
- 存储过程调用http 服务
--sql 服务器设置 --启动 OLE Automation Proceduressp_configure 'show advanced options', 1; --此选项用来显示sp_con ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- SQL存储过程的调用及写法
调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...
- SQL 语句调用这个存储过程,生成顺序编码
一直很讨厌存储过程,没想到今天帮了我大忙啊,或许会因为今天让我慢慢喜欢上存储过程吧,不多说了,切入正题 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这 ...
- ADO.NET访问SQL Server调用存储过程带回参
1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...
- (转载)delphi 中如何调用sql 存储过程
delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...
- 在PL/SQL中调用Oracle存储过程
存储过程 1 什么是存储过程? 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2 存储过程的参数模式 存储过程的参数特性: IN类型的参数 ...
随机推荐
- 用shell脚本创建sqlite表并添加sql语句--通用
重要使用的是EOF的功能,亲测和!功能一致:下面是测试代码 #!/bin/bash val=`ls`for v in ${val} do if [ ${v} == "test.db" ...
- Python爬取今日头条段子
刚入门Python爬虫,试了下爬取今日头条官网中的段子,网址为https://www.toutiao.com/ch/essay_joke/源码比较简陋,如下: import requests impo ...
- c# 坑人的发邮件组件
System.Net.Mail 在服务器25端口被封禁的情况下,无法使用其它诸如SSL 465端口发送.用过时的System.Web.Mail却可以.是微软更新速度太快呢,还是标准不一致呢. Syst ...
- 火狐firebug和firepath插件安装方法(最新)
火狐浏览器最近下掉了firebug和firepath插件,用户即使下载了火狐55以下的版本,也无法查找到这两个插件. 因此,可以用以下方法来获取这两个插件. 1.下载火狐55以内版本安装包,安装时迅速 ...
- Spring常用的三种注入方式
好文要收藏,摘自:https://blog.csdn.net/a909301740/article/details/78379720 Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入 ...
- 定时任务模块 schedule
# coding:utf-8 from learning_python.Telegram_push.check_hardware import check_cpu import schedule im ...
- Linux中安装nodejs及插件
Linux中安装nodejs及插件 1.去官网下载安装包 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通过 ...
- 关于微信小程序获取二维码的踩坑记录
1.踩坑需求:获取小程序的二维码 2.踩坑接口: https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN3 踩坑代码 pu ...
- 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营)
自动发单,自动评价,自动评论,自动推广 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营) 我们会根据你的微信公众号或微信小程序定制开发带有一定AI智 ...
- 使用 AWK 去掉文本文档中的空白行
在 Linux 操作系统中,可以使用 AWK 命令高效地处理文本文档.AWK 命令通过执行使用 AWK 语言编写的脚本程序,处理文本文档.AWK 脚本程序是由模式(patterns)与相关操作(cor ...