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

 

转载于:https://www.cnblogs.com/muzililong/p/10693439.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值