精华内容
下载资源
问答
  • /// 执行存储过程,返回 返回值 /// /// 存储过程名 /// 存储过程参数 /// 执行存储过程返回值 public static int RunProcedureWithReturn(string storedProcName, IDataParameter[] parameters) { using (SqlC
  • 主要介绍了Python中执行存储过程及获取存储过程返回值的方法,结合实例形式总结分析了Python调用存储过程的常用方法与相关操作注意事项,需要的朋友可以参考下
  • SqlServer获取存储过程返回值的实例,需要的朋友可以参考一下
  • 主要介绍了Sql Server 存储过程调用存储过程接收输出参数返回值,需要的朋友可以参考下
  • 本篇文章是对mysql存储过程在动态SQL内获取返回值进行了详细的分析介绍,需要的朋友参考下
  • 由于最近的工作基本都是在与shell和存储过程打交道,任何任务的开始都是以shell脚本开始,之前的任务是通过shell并行执行,后续的任务依赖于并行的任务是否执行完毕,下一个shell如果获取并行任务是否结束成为了一个...

    由于最近的工作基本都是在与shell和存储过程打交道,任何任务的开始都是以shell脚本开始,之前的任务是通过shell并行执行,后续的任务依赖于并行的任务是否执行完毕,下一个shell如果获取并行任务是否结束成为了一个难题,最后采取如下方案:

    1、每一个并行执行的任务完成之后都写入对应数据的成功标志

    2、下一个任务shell脚本每隔一段时间执行一次,判断是否所有标志都为成功,如果成功,执行该shell,于是就需要shell从数据库中获取是否都执行成功的标志。

    写了一个oracle存储过程来获取标志

    create or replaceprocedure p_getstatus(status out number) as .....;

    然后通过shell脚本获取存储过程的返回值,纠结了好长时间,shell脚本大致如下:

    #!/bin/bash

    value=`sqlplus -S  username/password <

    set pagesize 0;

    set feedback off;

    set verify off;

    set heading off;

    set echo off;

    var policyflag number;

    execute  p_getstatus(:flag);

    select :flag from dual;

    exit;

    EOF`

    echo $value

    if [ $value == 1 ]; then

    else

    fi

    终于搞定,脚本特殊说明以下两点

    1、sqlplus 命令必须使用 -S 参数,该参数会过滤掉sqlplus的所有输出,包括与数据库连接成功,断开连接,查询结果等.

    2、过程包含输出参数status,需要通过select :flag from dual;将查询结果输出到value变量中。

    其实,shell变量和sqlplus 变量处于两种不同的环境,无法直接赋值,将sqlplus的所有输出结果都过滤掉,只保留用户需要的字符串返回给shell环境,作为一个字符串赋值给shell变量。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7483882/viewspace-1064671/,如需转载,请注明出处,否则将追究法律责任。

    展开全文
  • 本文给出VB.Net调用存储过程并得到返回值的代码。
  • 主要介绍了Python调用MySQL存储过程并获得返回值的方法,涉及Python操作MySQL存储过程的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了PHP调用MySQL存储过程返回值的方法,较为详细的分析了存储过程的使用技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert] (@o_buyerid
    原文地址为:
    获取存储过程返回值及代码中获取返回值
    

    1.OUPUT参数返回值
    例: 向Order表插入一条记录,返回其标识

    CREATE PROCEDURE [dbo].[nb_order_insert] (
    @o_buyerid int
     ,
    @o_id bigint
     OUTPUT
    )
    AS

    BEGIN
    SET NOCOUNT ON ;
    BEGIN

    INSERT INTO [Order] (o_buyerid )
    VALUES (@o_buyerid
     )
    SET @o_id = @@IDENTITY

    END
    END

    存储过程中获得方法:

    DECLARE   @o_buyerid   int
    DECLARE   @o_id   bigint
    EXEC   [ nb_order_insert ]   @o_buyerid  ,o_id  bigint

    2.RETURN过程返回值

    CREATE PROCEDURE [dbo].[nb_order_insert] (
    @o_buyerid int
     ,
    @o_id bigint
     OUTPUT
    )
    AS

    BEGIN
    SET NOCOUNT ON ;
    IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_shopid
    ))
    BEGIN

    INSERT INTO [Order] (o_buyerid )
    VALUES (@o_buyerid
     )
    SET @o_id = @@IDENTITY

    RETURN 1  — 插入成功返回1
    END

    ELSE
    RETURN 0  — 插入失败返回0
    END

    存储过程中的获取方法
    DECLARE   @o_buyerid   int
    DECLARE   @o_id   bigint
    DECLARE   @result   bit
    EXEC   @result   =   [ nb_order_insert ]   @o_buyerid  ,o_id  bigint  

    3.SELECT 数据集返回值

    CREATE PROCEDURE [dbo].[nb_order_select] (
    @o_id int

    )
    AS
    BEGIN
    SET NOCOUNT ON ;
    SELECT o_id,o_buyerid FROM [Order]

    WHERE o_id = @o_id
    GO

    存储过程中的获取方法
    (1)、使用临时表的方法

    CREATE   TABLE   [ dbo ] . [ Temp ] (
    [ o_id ]   [ bigint ]   IDENTITY ( 1 , 1 NOT   FOR   REPLICATION   NOT   NULL ,
    [ o_buyerid ]   [ int ]   NOT   NULL
    )
    INSERT   [ Temp ]   EXEC   [ nb_order_select ]   @o_id
    – 这时 
    Temp  就是EXEC执行SELECT 后的结果集
    SELECT   *   FROM   [ Temp ]
    DROP   [ Temp ]  — 删除临时表

    (2)、速度不怎么样.(不推荐)

    SELECT   *   from   openrowset (’provider_name ' , ' Trusted_Connection = yes’, ' exec nb_order_select’)





    1.获取Return返回值

    程序<a href='http://www.javaxxz.com/thread-358357-1-1.html'>代码</a> 程序代码
    //存储过程
    //Create PROCEDURE MYSQL
    //     @a int,
    //     @b int
    //AS
    //     return @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 = 10;
    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
    MyCommand.Parameters["@b"].Value = 20;
    MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
    MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
    MyCommand.ExecuteNonQuery();
    Response.Write(MyCommand.Parameters["@return"].Value.ToString());


    2.获取Output输出参数值

    程序代码 程序代码
    //存储过程
    //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();
    Response.Write(MyCommand.Parameters["@c"].Value.ToString());




    C#接收存储过程返回值:

         public static int User_Add(User us)
         {
             int iRet;
             SqlConnection conn = new SqlConnection(Conn_Str);
             SqlCommand cmd = new SqlCommand("User_Add", conn);
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.AddWithValue("@UName", us.UName);
             cmd.Parameters.AddWithValue("@UPass", us.UPass);
             cmd.Parameters.AddWithValue("@PassQuestion", us.PassQuestion);
             cmd.Parameters.AddWithValue("@PassKey", us.PassKey);
             cmd.Parameters.AddWithValue("@Email", us.Email);
             cmd.Parameters.AddWithValue("@RName", us.RName);
             cmd.Parameters.AddWithValue("@Area", us.Area);
             cmd.Parameters.AddWithValue("@Address", us.Address);
             cmd.Parameters.AddWithValue("@ZipCodes", us.ZipCodes);
             cmd.Parameters.AddWithValue("@Phone", us.Phone);
             cmd.Parameters.AddWithValue("@QQ", us.QQ);
             cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue;      
             try
             {
                 conn.Open();
                 cmd.ExecuteNonQuery();
                 iRet = (int)cmd.Parameters["@RETURN_VALUE"].Value;
             }
             catch (SqlException ex)
             {
                 throw ex;
             }
             finally
             {
                 conn.Close();
             }
             return iRet;
         }

    C#接收存储过程输出参数:

        public static decimal Cart_UserAmount(int UID)
        {
            decimal iRet;
            SqlConnection conn = new SqlConnection(Conn_Str);
            SqlCommand cmd = new SqlCommand("Cart_UserAmount", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@UID", UID);
            cmd.Parameters.Add("@Amount", SqlDbType.Decimal).Direction=ParameterDirection.Output;
            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                iRet = (decimal)cmd.Parameters["@Amount"].Value;
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
            return iRet;
        }


    转载请注明本文地址: 获取存储过程返回值及代码中获取返回值
    展开全文
  • 主要介绍了Java调用MySQL存储过程并获得返回值的方法,实例分析了java实现MySQL存储过程的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了C#获取存储过程返回值和输出参数值的方法,有需要的朋友可以参考一下
  • 存储过程: 代码如下:CREATE PROCEDURE [dbo].[Proc_GetInfo] ...C#获取存储过程返回值: 代码如下:var db = DatabaseFactory.CreateDatabase(); var cmd = db.GetStoredProcCommand(“Proc_GetInfo”); db.Ad
  • 创建带返回值存储过程 代码如下: create proc proc_addUserInfo @uname varchar(50), @upass varchar(50), @Returnc int output as begin insert into erp_user(u_name,u_pass)values(@uname,@upass) set @Returnc...
  • 主要介绍了C#调用存储过程的方法,结合实例形式详细分析了各种常用的存储过程调用方法,包括带返回值、参数输入输出等,需要的朋友可以参考下
  • @Autowired private EntityManager entityManager; StoredProcedureQuery query = entityManager .createStoredProcedureQuery("spGetPrice") // 被调用存储过程名称 .registerStoredProcedureParameter("Co...
    @Autowired
    private EntityManager entityManager;
    
    StoredProcedureQuery query = entityManager
            .createStoredProcedureQuery("spGetPrice") // 被调用存储过程名称
            .registerStoredProcedureParameter("Company", String.class, ParameterMode.IN) // 注册参数
            .registerStoredProcedureParameter("Art_Id", String.class, ParameterMode.IN)
            .registerStoredProcedureParameter("RetCode", Integer.class, ParameterMode.INOUT)
            .registerStoredProcedureParameter("Price", Float.class, ParameterMode.INOUT)
            .setParameter("Company", comId)
            .setParameter("Art_Id", bean.getProductId());
                query.execute();
    Float priceStr = (Float) query.getOutputParameterValue("Price"); // 获取存储过程中的返回值
    
    展开全文
  • 主要介绍了asp.net实现调用存储过程并带返回值的方法,结合实例形式较为详细的分析了asp.net存储过程调用的相关技巧,需要的朋友可以参考下
  • SQL Server 存储过程返回值的几种方式

    千次阅读 2018-11-21 17:58:58
    获得存储过程返回值–通过查询分析器获得 (1)不带任何参数的存储过程(存储过程语句中含有return) —创建存储过程 CREATE PROCEDURE testReturn AS return 145 GO —执行存储过程 DECLARE @RC int ...

    获得存储过程的返回值–通过查询分析器获得

    • (1)不带任何参数的存储过程(存储过程语句中含有return)

      —创建存储过程
      CREATE PROCEDURE testReturn
      AS
      return 145
      GO
      —执行存储过程
      DECLARE @RC int
      exec @RC=testReturn
      select @RC
      —说明
      查询结果为145

    • (2)带输入参数的存储过程(存储过程语句中含有return)

      —创建存储过程
      create procedure sp_add_table1
      @in_name varchar(100),
      @in_addr varchar(100),
      @in_tel varchar(100)
      as
      if(@in_name = ‘’ or @in_name is null)
      return 1
      else
      begin
      insert into table1(name,addr,tel) values(@in_name,@in_addr,@in_tel)
      return 0
      end
      —执行存储过程
      <1>执行下列,返回1
      declare @count int exec @count = sp_add_table1 ‘’,‘中三路’,‘123456’ select @count
      <2>执行下列,返回0
      declare @count int exec @count = sp_add_table1 ‘’,‘中三路’,‘123456’ select @count
      —说明
      查询结果不是0就是1

    • (3)带输出参数的存储过程(存储过程中可以有return可以没有return)

      例子A:
      —创建存储过程
      create procedure sp_output
      @output int output
      as
      set @output = 121
      return 1
      —执行存储过程
      <1>执行下列,返回121
      declare @out int
      exec sp_output @out output
      select @out
      <2>执行下列,返回1
      declare @out int
      declare @count int
      exec @count = sp_output @out output
      select @count
      —说明
      有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值

      例子B:
      —创建存储过程
      create procedure sp_output
      @output int output
      as
      set @output = 121
      —执行存储过程
      <1>执行下列,返回121
      declare @out int
      exec sp_output @out output
      select @out
      <2>执行下列,返回0
      declare @out int
      declare @count int
      exec @count = sp_output @out output
      select @count
      —说明
      没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0

    返回方式 :

    CREATE PROCEDURE [dbo].[nb_order_insert](
    @o_buyerid int ,
    @o_id bigint OUTPUT
    )
    AS
    BEGIN
    SET NOCOUNT ON;
    BEGIN
    INSERT INTO [Order](o_buyerid )
    VALUES (@o_buyerid )
    SET @o_id = @@IDENTITY
    END
    END
    
    存储过程中获的值的方法:
    
    DECLARE @o_buyerid int
    DECLARE @o_id bigint
    EXEC [nb_order_insert] @o_buyerid,@o_id output
    
    #另一个例子
    CREATE PROCEDURE PR_Sum 
        @a int, 
        @b int, 
        @sum int output
    AS
    BEGIN
        set @sum=@a+@b 
    END
    --调用存储过程
    declare @sum2 int
    exec  PR_Sum 1,2,@sum2 output
    print @sum2
    
    • RETURN过程返回值
    CREATE PROCEDURE [dbo].[nb_order_insert](
    @o_buyerid int ,
    @o_id bigint OUTPUT
    )
    AS
    BEGIN
    SET NOCOUNT ON;
    IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_buyerid ))
    BEGIN
     INSERT INTO [Order](o_buyerid ) VALUES (@o_buyerid ) 
     SET @o_id = @@IDENTITY 
     RETURN 1 — 插入成功返回1 
    END 
    ELSE 
     RETURN 0 — 插入失败返回0 END
     
    存储过程中的获取值的方法
    
    DECLARE @o_buyerid int
    DECLARE @o_id bigint
    DECLARE @result bit
    EXEC @result = [nb_order_insert] @o_buyerid ,o_id output
    

    总结:
    (1)存储过程共分为3类:
    A.返回记录集的存储过程---------------------------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录
    B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令
    C.行为存储过程-----------------------------------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作
    (2)含有return的存储过程其返回值为return返回的那个值
    (3)没有return的存储过程,不论执行结果有无记录集,其返回值是0
    (4)带输出参数的存储过程:假如有return则返回return返回的那个值,假如要select输出参数,则出现输出参数的值,于有无return无关

    引用:
    https://www.cnblogs.com/soundcode/p/6810712.html
    https://www.cnblogs.com/alsf/p/7358027.html

    展开全文
  • 要从存储过程返回值,您需要使用用户定义的会话特定变量。在变量名称前添加@符号。例如,对变量valido使用@symbol。相同的语法如下:SELECT@valido;每当使用select语句时,都需要使用@anyVariableName。语法如下:...
  • 但它不返回任何东西,我不知道,为什么?CREATE DEFINER=`root`@`localhost` PROCEDURE `validar_egreso`(IN codigo_producto VARCHAR(100),IN cantidad INT,OUT valido INT(11))BEGINDECLARE resta INT(11);SET...
  • 今天遇一个同学聊存储过程返回值经常得到意外的值为null, 因为白天有事,晚上给做一个实验放在这里供有相应问题的同学查看一下。 存储过程: delimiter// createprocedureusp_s2(outpar1int) begin selectinet_ntoa...
  • java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
  • create table tb_storage(id number(9),shopid varchar(10),storage number(10) not null);Table createdcreate table tb_shop(id number(9),shopid varchar(10),shopname varchar(20));Table createdinsert into tb...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 340,454
精华内容 136,181
关键字:

存储过程返回值是什么意思