精华内容
下载资源
问答
  • 由于最近的工作基本都是在与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/,如需转载,请注明出处,否则将追究法律责任。

    展开全文
  • //存储过程//Create PROCEDURE MYSQL// @a int,// @b int,// @c int output//AS// Set @c = @a + @b//GOSqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServ...

    //存储过程

    //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;

    }

    转自:http://www.cnblogs.com/souso/archive/2009/09/09/1563104.html

    展开全文
  • 1、mysql创建存储过程#结束符号默认;, delimiter $$语句表示结束符号变更为$$delimiter $$CREATE PROCEDURE `demo`(IN idno VARCHAR(100), out str VARCHAR(4000))BEGINSET str = '';set str = concat(str, "SELECT ...

    1、mysql创建存储过程

    #结束符号默认;, delimiter $$语句表示结束符号变更为$$

    delimiter $$

    CREATE PROCEDURE `demo`(IN idno VARCHAR(100), out str VARCHAR(4000))

    BEGIN

    SET str = '';

    set str = concat(str, "SELECT count(DISTINCT `person_adolescent_info`.`adolescent_IDNo`) AS `count`,'重点青少年' AS `name`,'adolescent' AS `typeCode` FROM `person_adolescent_info`");

    if (idno != '') then

    set str = concat(str, " where adolescent_community like concat('", idno, "','%')");

    end if;

    END$$

    #结束符号修改

    delimiter ;

    2、mybatis调用

    (1)注解方式

    @Select("call demo('${orgCode}', #{keypersoninfov, mode=OUT, jdbcType=VARCHAR})")

    @Options(statementType = StatementType.CALLABLE)

    String getKeypersoninfo(Map map);

    (2)xml方式

    call demo('${orgCode}', #{keypersoninfov, mode=OUT, jdbcType=VARCHAR})

    展开全文
  • java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数。下面是详细情况说明:一:...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结

    果集,结果集)

    oracle中procedure是不能有返回值的,要想返回值,就得有

    输出参数,同样要想返回记录集,可以把游标类型作为输出参

    数。

    下面是详细情况说明:

    一:无返回值的存储过程调用

    存储过程:

    create  or replace Procedure PRO_1(PARA1 in

    VARCHAR2,PARA2 in VARCHAR2)   as

    begin

    insert into  EMP(ID,NAME) values (PARA1,

    PARA2);

    end PRO_1;

    java程序调用:(和下面类同)

    二:有返回值的存储过程调用(非结果集)

    存储过程:

    create  or replace Procedure PRO_2(PARA1 in

    VARCHAR2,PARA2 OUT VARCHAR2)   as

    bigin

    select NAME into PARA2 from EMP where ID=

    PARA1;

    end PRO_2;

    java程序调用:

    DriverManager.registerDriver(new

    oracle.jdbc.driver.OracleDriver());

    Connection conn =

    DriverManager.getConnection(

    "jdbc:oracle:thin:@202.96.28.250:1521:

    "username", "password");

    CallableStatement st = conn.prepareCall("{

    PRO_2(?,?)}");

    st.setString(1,"1");

    st.registerOutParameter(2,OracleTypes.VARCHAR

    st.execute();

    String name = st.getString(2);//2与上面存储

    的out参数位置对应,也可以同时有多个返回值,那就是

    再多加几个out参数了

    System.out.println(r.getString("title"));

    三:有返回值的存储过程调用(返回结果集)

    存储过程:

    create or replace procedure Test(p_cur in out

    sys_refcursor)

    as

    begin

    open p_cur for select * from BOOK;

    end;

    java程序调用:

    try {

    DriverManager.registerDriver(new

    oracle.jdbc.driver.OracleDriver());

    Connection conn =

    DriverManager.getConnection(

    "jdbc:oracle:thin:@202.96.28.250:1521:

    "username", "password");

    CallableStatement st = conn.prepareCall(

    "{call Test(?)}");

    st.registerOutParameter(1,OracleTypes.CURSOR)

    st.execute();

    ResultSet r = (ResultSet) st.getObject(1);

    while (r.next()) {

    System.out.println(r.getString("title"));

    }

    }

    catch(Exception e) {

    }

    展开全文
  • 本文实例讲述了Python中执行存储过程获取存储过程返回值的方法。分享给大家供大家参考,具体如下:在Pathon中如何执行存储过程呢?可以使用如下方法:存储过程定义基本如下:ALTER procedure [dbo]. [mysp]@...
  • 我有一个存储过程,它将对象添加到数据库并返回生成的ID号。作为参考,其基本结构如下:ALTER PROCEDURE [dbo].[myProc]@Name nvarchar(50),@Creator nvarchar(50),@Text nvarchar(200),@Lat float,@Lon float,@myID ...
  • /// /// 执行存储过程,返回" 返回值"/// /// 存储过程名/// 存储过程参数/// 执行存储过程返回值public static int RunProcedureWithReturn(string storedProcName, IDataParameter[] parameters){using ...
  • 创建存储过程IN为输入值,OUT 为输出值CREATE PROCEDURE STAFF_LOGIN(IN username_ VARCHAR(32),IN passowrd_ VARCHAR(32),OUT id_ INT,OUT sid_ INT,OUT name_ VARCHAR(20),OUT gender_ VARCHAR(1),OUT age_ INT,OUT...
  • 虽然Stack Overflow中有很多关于这个问题的问题但是我无法正确解决这个问题,任何人都可以帮我解决这个问题,让我们说有两个存储过程,CREATE PROCEDURE `procOne`(stName varchar(7),fullItemCode varchar(12), ...
  • 总体思路:map传值controller:Map m=new HashMap();m.put("name", 'zs');m.put("password", '55555');cardservice.bindCard(m);...//获得返回值json.put("msg", m.get("msg"));json.put("result", ...
  • 很简单,不需要使用游标循环来读取,...1MySql通用分页存储过程23过程参数4p_cloumnsvarchar(500),p_tablesvarchar(100),p_wherevarchar(4000),p_ordervarchar(100),p_pageindexint,p_pagesizeint,out p_recordco...
  • 本文yjbys小编为大家主要介绍了Java调用MySQL存储过程并获得返回值的方法,实例分析了java实现MySQL存储过程的相关技巧,具有一定参考借鉴价值,需要的'朋友可以参考下本文实例讲述了Java调用MySQL存储过程并获得返回值...
  • sqlserver的存储过程执行都很正常,就是php获取不到返回的参数,这个问题再调用sql2008r2的时候出现问题,在调用sql2016的时候正常,很奇怪!参考解决问题的资料:sqlsrv_next_result($stmt);echo$outSeq;$...
  • Java执行Oracle存储过程并接收多个返回值(集合/数值)Java代码:package com.pure.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;...
  • 定义如下存储过程: create PROCEDURE mytest ( @returnval decimal OUTPUT --定义一个输出变量 ) as DECLARE @amount DECIMAL DECLARE mycursor CURSOR FOR SELECT Amount FROM dbo.test --定义一个游标 OPEN ...
  • 1.获取Return返回值//存储过程//CreatePROCEDUREMYSQL//@aint,//@bint//AS//return@a+@b//GOSqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());...
  • 导读热词下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。private void empsInDept(Connection myConnect,int deptId) throws sqlException {CallableStatement...
  • 1.获取Return返回值//存储过程//Create PROCEDURE MYSQL// @a int,// @b int//AS// return @a + @b//GOSqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToStr...
  • 输出参数和返回值获取 下例中retValue代表返回值,BasicInfoId代表输出参数。 retValue和BasicInfoId都属于传进来的参数(参数是一个对象)中的字段 <insert id="insertBasicInfo" statementType="CALLABLE">...
  • SqlSugar 执行存储过程获取返回值

    千次阅读 2021-04-16 10:36:14
    根据官方文档 如下: //简单用法 ...//带有output的存储过程 var nameP= new SugarParameter("@name", "张三"); var ageP= new SugarParameter("@age", null, true);//设置为output var dt = db.Ado.UseSt
  • 过程参数p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varchar(100),p_pageindex int,p_pagesize int,out p_recordcount int,out p_pagecount int$:begindeclare v_sqlcounts ...
  • 1.获取Return返回值//存储过程//Create PROCEDURE MYSQL// @a int,// @b int//AS// return @a + @b//GOSqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToStr...
  • publicActionResult EditWorkOrder(FormCollection collection){AppLog.Info("EditWorkOrder");try{string openID = Session["OpenID"].ToString();AppLog.Info("添加派工单时的openid:" +openID );...
  • 本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下:CREATE PROCEDURE [dbo].[GetNameById]@studentid varchar(8),@studentname nvarchar(50) OUTPUTASBEGINSELECT @studentname=studentname ...
  • 看到RETURN的返回值不同,代表意义各不同,能过查找,得出以下结论:RETURN语句会导致过程立即退出。考察下面的例子:CREATE PROCEDURE check_tables(@who VARCHAR(30))ASIF EXISTS(SELECT name FROM Philosophers ...
  • 在Pathon中如何执行存储过程呢?可以使用如下方法:存储过程定义基本如下:ALTER procedure [dbo]. [mysp]@Station varchar ( 50),@SN varchar ( 50),@Info varchar ( 500) output ,@Msg varchar ( 500) output1. ...
  • 2、获取Return返回值//存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @b //GO SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[...
  • 文章来自:...6.0不仅支持大型数据库如oracle等的绝大部分功能,如存储过程、视图、触发器、job等等,而且修正了这些功能所存在的bug,其中6.0.1还支持64位windows,以及表空间。在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 336,174
精华内容 134,469
关键字:

存储过程里获取存储过程的返回值