精华内容
下载资源
问答
  • 存储过程是存放在数据库服务器上的预先编译好的sql语句。使用存储过程,可以直接在数据库中存储并运行功能强大的任务。存储过程在第一应用程序执行时进行语法检查和编译,编译好的版本保存在高速缓存中。在执行重复...

    存储过程是存放在数据库服务器上的预先编译好的sql语句。使用存储过程,可以直接在数据库中存储并运行功能强大的任务。存储过程在第一应用程序执行时进行语法检查和编译,编译好的版本保存在高速缓存中。在执行重复任务时,存储过程可以提高性能和一致性。由于存储过程可以将一系列对数据库的操作放在数据库服务器上执行,因而可以降低Web服务器的负载,提高整个系统的性能。

    1、创建存储过程

    CREATE PROC [DBO].[GetOrdersByOrderDate]

    @OrderDate DATETIME

    AS

    SELECT

    [OrderID],[CustomerID],[OrderDate]

    FROM

    [Orders]

    WHERE

    [OrderDate] >= @OrderDate

    USE Northwind

    GO

    EXEC GetByOrderDate '1996-10-10 0:00:00'

    2、调用存储过程

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);

    try

    {

    SqlCommand cmd = new SqlCommand();

    cmd.CommandText = "[GetOrdersByOrderDate]";

    cmd.Connection = conn;

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("@OrderDate", SqlDbType.DateTime, 8).Value = "1998-5-5";

    conn.Open();

    SqlDataAdapter da = new SqlDataAdapter();

    da.SelectCommand = cmd;

    DataSet ds = new DataSet();

    da.Fill(ds);

    gvOrders.DataSource = ds;

    gvOrders.DataBind();

    }

    catch (SqlException ex)

    {

    throw new Exception(ex.Message, ex);

    }

    finally

    {

    conn.Close();

    }

    }

    3、输出参数

    存储过程可以通过输出参数来返回值。

    CREATE PROC [DBO].[GetOrderDetailsTotalByProductID]

    @ProductID INT,

    @Total MONEY OUTPUT

    AS

    SELECT @Total = SUM([UnitPrice]*[Quantity])

    FROM

    [Order Details]

    WHERE

    [ProductID] = @ProductID

    SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);

    try

    {

    SqlCommand cmd = new SqlCommand();

    cmd.CommandText = "[GetOrderDetailsTotalByProductID]";

    cmd.Connection = conn;

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("@ProductID", SqlDbType.Int, 4).Value = 21;

    cmd.Parameters.Add("@Total", SqlDbType.Money).Direction = ParameterDirection.Output;

    conn.Open();

    cmd.ExecuteNonQuery();

    lblTotal.Text = cmd.Parameters["@Total"].Value.ToString();

    }

    catch (SqlException ex)

    {

    throw new Exception(ex.Message, ex);

    }

    finally

    {

    conn.Close();

    }

    4、Return 返回值

    使用返回值表示存储过程的执行状态,它类似于输出参数,其区别:

    (1)、返回值只能返回sql整数值;

    (2)、返回值不能在存储过程内部声明,它使用Transcat-SQL的RETURN语句返回;

    CREATE PROC [DBO].[GetOrdersByCustomerID]

    @CustomerID INT,

    @OrderDate DATETIME OUTPUT

    AS

    SELECT @OrderDate = MAX([OrderDate])

    FROM

    [Orders]

    WHERE

    [CustomerID] = @CustomerID

    IF @OrderDate IS NULL

    RETURN 0

    ELSE

    RETURN 1

    SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);

    try

    {

    SqlCommand cmd = new SqlCommand();

    cmd.CommandText = "[GetOrdersByEmployeeID]";

    cmd.Connection = conn;

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;

    cmd.Parameters.Add("@EmployeeID", SqlDbType.Int, 4).Value = 1;

    cmd.Parameters.Add("@OrderDate", SqlDbType.DateTime).Direction = ParameterDirection.Output;

    conn.Open();

    cmd.ExecuteNonQuery();

    lblReturnValue.Text = cmd.Parameters["@ReturnValue"].Value.ToString();

    lblOrderDate.Text = cmd.Parameters["@OrderDate"].Value.ToString();

    }

    catch (SqlException ex)

    {

    throw new Exception(ex.Message, ex);

    }

    finally

    {

    conn.Close();

    }

    展开全文
  • 存储过程OUTPUT实例

    2013-07-28 13:51:43
    就是一个很简单的实例。对output不熟的话可以看看
  • c#中调用 存储过程 output获取不到值,在salserver中执行有值,求大牛解答 下面是代码: DAL层: ``` public List<Book> GetBooks(int categoryId, int pageIndex, int pageSize, ref int pageCount, string ...
  • 创建存储过程Create PROCEDURE MYSQL@a int,@b int,@c int outputASSet @c = @a + @bGO通过以下方法可以获得储存过程的输出参数SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[...

    创建存储过程

    Create PROCEDURE MYSQL

    @a int,

    @b int,

    @c int output

    AS

    Set @c = @a + @b

    GO

    通过以下方法可以获得储存过程的输出参数

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());

    conn.Open();

    SqlCommand MyCommand = new SqlCommand("MYSQL", conn);

    MyCommand.CommandType = CommandType.StoredProcedure;

    MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));

    MyCommand.Parameters["@a"].Value = 20;

    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));

    MyCommand.Parameters["@b"].Value = 20;

    MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int));

    MyCommand.Parameters["@c"].Direction = ParameterDirection.Output;

    MyCommand.ExecuteNonQuery();

    MessageBox.Show(MyCommand.Parameters["@c"].Value.ToString());

    C&num;获取存储过程的 Return返回值和Output输出参数值

    1.获取Return返回值  程序代码 //存储过程//Create PROCEDURE MYSQL//     @a int,//     @b int//AS//     return @a + ...

    关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C&num;获取存储过程的 Return返回值和Output输出参数值

    关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...

    C&num;&period;net获取存储过程的Return返回值和Output输出参数值

    原文发布时间为:2008-10-25 -- 来源于本人的百度文章 [由搬家工具导入] 1.获取Return返回值 程序代码//存储过程//Create PROCEDURE MYSQL//     @a ...

    C&num;获取存储过程返回值和输出参数值的方法

    //转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...

    SqlServer如何获取存储过程的返回值

    1.Output参数返回值 1 CREATE PROCEDURE [dbo].[upInformation]( 2 @age int , 3 @id bigint OUTPUT 4 ) 5 AS 6 ...

    用exec调用带有output输出参数的存储过程

    用exec调用带有output输出参数的存储过程,想要得到输出参数的值,必须在调用参数后面加output关键字,如: declare @value int exec up_test    2,3,@v ...

    利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程

    1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器 ...

    数据库系统(六)---MySQL语句及存储过程

    一.DDL.DML.DCL常用语句 1.DDL(Data Definition Language)数据库定义语言 (1)数据库模式定义 #创建数据库 create database if exsite ...

    (十八)JDBC获取存储过程和主键

    目录 获取数据库自动生成的主键: JDBC调用存储过程 获取数据库自动生成的主键: update 更新操作以后,如果需要用到结果集,可以通过 PreparedStatement.getResultSe ...

    随机推荐

    c&plus;&plus; 数据类型转换: static&lowbar;cast dynamic&lowbar;cast reinterpret&lowbar;cast const&lowbar;cast

    c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast  [版权声明]转载请注明出处 http://www.cnblogs.c ...

    在silverlight中通过WCF连接ORACLE DB数据库&lpar;转&rpar;

    转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4 这不是我的原创,我也是上网学习的~ How to get data f ...

    使用java 程序创建格式为utf-8文件的方法&lpar;写入和读取json文件&rpar;

    使用java 程序创建格式为utf-8文件的方法:  try{            File file=new   File("C:/11.jsp");              ...

    五、案例-指令参考-freemarker指令、表达式

    案例-指令参考描述:本人自己测试写了一遍,如有错的地方,懂freemarker的朋友望指点指点! 案例-指令参考 表达式 一. Assign 1.

    如何保持iOS上键盘出现时输入框不被覆盖

    在 iOS5 上请求显示键盘时,系统从屏幕底部将键盘滑入上来,位于应用的内容之上. (墙内:http://mikixiyou.iteye.com/blog/1488302) 如果屏幕中的内容项目比较多 ...

    JAVAFX-3 开发应用

    理解布局 布局容器(Layoutcontainer)或面板(Pane)允许对JavaFX应用程序场景图中的UI控件进行灵活.动态的排布.JavaFX Layout API包括下列容器类: ● Bord ...

    c&num;代码启动任务管理器的几种方法

    1.直接启动 ProcessStartInfo info = new ProcessStartInfo(); info.FileName = Path.Combine(Environment.GetE ...

    laravel----------laravel5&period;3调度任务以及Artisan

    1.在使用的过程中会遇到有些函数不能用需要在php配置文件里面打开: disable_functions = exec,passthru,popen,proc_open,shell_exec,syst ...

    bzoj千题计划234:bzoj3802&colon; Vocabulary

    http://www.lydsy.com/JudgeOnline/problem.php?id=3802 dp[i][0/1/2/3]  表示前i个字母,第1.2个字符串,第2.3个字符串的关系分别为 ...

    Linux C 遍历指定目录

    #include //标准输入输出 #include //各种系统调用 #include //与目录有关的 ...

    展开全文
  • mysql5.0支持存储过程后,现在mysql6.0Alpha 版本也是可用的。6.0不仅支持大型数据库(如 oracle和如此的大多数功能(如存储过程、视图、触发器、作业等,并修复了这些功能存在的bug,6.0.1 版还支持windows 64 位 和...

    E文好的请查看原文,菜鸟级翻译,欢迎批评指正!

    mysql5.0支持存储过程后,现在mysql6.0Alpha 版本也是可用的。6.0不仅支持大型数据库(如 oracle和如此的大多数功能(如存储过程、视图、触发器、作业等,并修复了这些功能存在的bug,6.0.1 版还支持windows 64 位 和表空间。

    C/c + + 要访问 mysql,只是一些简单的常用操作,c嵌入式简单查询、插入、更新和其他操作的使用可以。这些语句作为业务复杂、完整的业务功能需要的sql 操作,很大一部分是嵌入c 代码c 代码会导致更多和更复杂的不清楚这一次自然的存储过程来封装所有数据库逻辑思想,简单地通过调用mysql 存储的过程 c 接口可以实现他们的目标大大减少工作量的c 程序员,但也容易处理前端业务逻辑和数据库处理逻辑分离。在这里只调用存储的过程c 语言的简单方法。

    1、首先创建一个表用于存储用户信息

    Create table student(

    id int auto_increment,

    name varchar(20),

    age tinyint,

    remark varchar(50),

    primary key(id)

    );

    2、插入几条用户信息

    Insert into student values(1,"zhouys",90, "");

    commit;

    3、查看刚刚插入的用户信息

    mysql> select * from student;

    +------+-----------+------+----------+

    | id | name | age | remark |

    +------+-----------+------+----------+

    | 1 | zhouys | 90 | |

    +------+-----------+------+-----------+

    1 row in set (0.00 sec)

    mysql>

    4、创建存储过程

    delimiter //

    create procedure querystudent(

    in in_id int , #0- Character ID 1-digital id

    #

    out out_ret int, # Returns the result

    out out_name varchar(20), # First name

    out out_age int # Age

    )

    label_a:begin

    declare v_name varchar(20) ;

    declare v_age tinyint ;

    # Parameters determine

    if (in_id<=0) then

    set out_ret=-1; #id error

    leave label_a;

    end if;

    SELECT name,age into v_name,v_age from student where't found

    leave label_a;

    end if;

    set out_ret=0;

    set out_name=v_name;

    set out_age=v_age;

    end;

    //

    delimiter ;

    5、C语言调用存储过程的方法步骤:

    5.1、Mysql 的句柄初始化

    if(!mysql_init(&mysql))

    {

    printf("mysql_init failed!\n");

    return 0;

    }

    5.2、连接到MySQL数据库

    //login or connect

    if(!mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS))

    {

    printf("mysql_real_connect() failed!\n");

    mysql_close(&mysql);

    return 0;

    }

    5.3、调用存储过程

    //call

    strcpy(query,"call querystudent (1,@ret,@ out_name,@ out_age)");

    printf("query sql=[%s]\n",query);

    ret= mysql_real_query(&mysql,query,(unsigned int)strlen(query));

    5.4、查询返回值及输出参数值

    mysql_query(&mysql, "SELECT @ret,@ out_name,@ out_age ");

    //get result

    if (ret)

    {

    printf("Error exec query: %s\n",mysql_error(&mysql));

    }

    else

    {

    printf("[%s] exec...\n", query);

    }

    results = mysql_store_result(&mysql);

    5.5、获取结果值

    while((record = mysql_fetch_row(results))) {

    printf("[%s]-[%s]-[%s]\n", record[0], record[1],record[2]);

    }

    常规的存储过程将只返回结果,^_^。

    5.6、释放资源和mysql连接句柄

    mysql_free_result(results);

    mysql_close(&mysql);

    6、结论

    Mysql的存储过程可以实现相当强大的功能,这里只是一些基本的用法,希望能给你一些帮助。也欢迎分享......

    7、个人使用经验心得

    像C#调用都可以绑定输出参数,直接通过输出参数得到值,但是c++中使用prepare绑定输出参数,却返回以下错误信息:

    Error Code: 1414. OUT or INOUT argument 2 for routine knockout_dbo.ko_SignUpYoungBoxer is not a variable or NEW pseudo-variable in BEFORE

    trigger

    以下链接是找到的相关问题讨论:

    http://forums.mysql.com/read.php?38,505961

    http://bugs.mysql.com/bug.php?id=25970

    下面是一个c++的MySQL封装

    http://tangentsoft.net/mysql++/

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2014-02-10 16:41

    浏览 200

    评论

    展开全文
  • 在游标循环当中给output 变量赋值报指定的转换无效 错误必须在存储过程最后再给output变量赋值 转载于:https://www.cnblogs.com/hjtdlx/p/3761001.html

    在游标循环当中给 output 变量赋值报 指定的转换无效 错误
    必须在存储过程最后再给 output 变量赋值

    转载于:https://www.cnblogs.com/hjtdlx/p/3761001.html

    展开全文
  • 存储过程output的取

    2017-07-03 11:17:00
    sql存储过程定义字段@RetValue int outas select @RetValue=xxxx from ....... cs代码:SqlCommand com = new SqlCommand("存储过程名",con对象);//建立SQL命令com.CommandType = CommandType.StoredProcedure;//指.....
  • /*嵌套存储过程中需要输出来的参数*/output 就是这个存储过程返回的值 也可以说输出的值--创建存储过程 求最大值CREATE PROCEDURE [dbo].[P_Max]@a int, -- 输入@b int, -- 输入@Returnc int output --输出AS if (@a...
  • 属性中指定,并且它表明了是为存储过程提供数据,还是等待这个过程返回数据。允许的方向代码如下所示: 1.Input (输入) 2.InputOutput (输入输出) 3.Output (输出 ) 4.ReturnValue (返回值) 要创建...
  • CREATE PROCEDURE [dbo].[usp_DataTransferMaxID_Create]  @NEW_ID INT OUTPUT     ...  SET @NEW_ID=@OLD_ID+1 ...被其他存储过程调用 DECLARE @TRANSFER_ID INT EXEC usp_DataTransferMaxID_Create
  • 1、存储过程中不使用外部参数。 存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: HF_Ultrastrong -- Create date: 2015年7...
  • 数据库中使用output值和return值:   ---------------------------...--数获存储过程中的OUTPUT参数和返回值获取 -------------------------------------------------------   CREATE PROCEDURE Proc_Test;1
  • 如何使用存储过程output参数

    千次阅读 2008-10-16 08:23:00
    存储过程代码如下: ALTER PROCEDURE dbo.testOutput ( @p1 int , @p2 int OUTPUT, @p3 int ) AS /* SET NOCOUNT ON */ select @p2 = count(*) from testProc where testi
  • 原帖:http://blog.csdn.net/htl258/archive/2009/03/30/4035016.aspx<br />  create proc pr_getdate @getYearnvarchar(4) output, ...output as begin declare@snvarchar(200)<br
  • --返回output参数存储过程 CREATE PROC proc_execute @ID int output AS --设置值 SET @ID=1000 GO --调用存储过程,填充值给@ID declare @ID int execute proc_execute @ID output --查询@ID ...
  • Output 此参数只用于将信息从存储过程传输回应用程序。  ReturnValue 此参数表示存储过程的返回值。SQL Server 的存储过程参数列表中不显示该参数。它只与存储过程的 RETURN 语句中的值相关联。  存储过程为...
  • 数据库中使用output值和return值: ------------------------------------------------------- --数获存储过程中的OUTPUT参数和返回值获取 -------------------------------------------------...
  • using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["str"].ConnectionString)) { conn.Open();... 获取output类型参数的值的时候,需要把reader关掉,否则无法获取值
  • 存储过程: createprocproc_GetUserID @UserNamenvarchar(50),@IDintoutput as begin set@ID=(selectIDfromUserAccountwhereUserName=@UserName) end C#代码: privatevoidGetUserID...
  • 存储过程如下: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[GetGroupDataStat] -- Add the parameters for the stored procedure here @GroupId nvarchar(50), --集团...
  • 执行存储过程出现这个错误param[1] = comm.Parameters.Add("@Name", SqlDbType.VarChar); //错误param[1].Value = Name ;...output方式从存储过程传出参数 必须使用三个参数版本的,及Parameters.Add("@N

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,514
精华内容 1,405
关键字:

存储过程output