精华内容
下载资源
问答
  • 一个过程a我要在b过程调用a所返回的值
  • declare @value varchar(MAX) EXEC tmfun_GetSearchStr  '陕西','Table1','Name',@value output ...其中,tmfun_GetSearchStr 为存储过程,作用是@value输出第一个参数,中间两个参数没有用到,当

    declare @value varchar(MAX)
    EXEC  tmfun_GetSearchStr '陕西','Table1','Name',@value output
    select * from users where address=@value

    显示结果为


     

    解释:

    其中,tmfun_GetSearchStr 为存储过程,作用是@value输出第一个参数,中间两个参数没有用到,当

    EXEC tmfun_GetSearchStr '陕西','Table1','Name',@value output执行完时,@value的值是“陕西”,

    然后再users中查找address=“陕西”的行。

     

    users表为

    wh 27 陕西
    yzp 24 重庆
    Name 24 榆林


     

    展开全文
  • 项目中有个需求是数据库自动定时扫描数据库,给符合要求的用户发送推送消息,这就需要在存储过程中自动调用发送推送的程序,由于程序复杂,所以利用orcle 的pl/sql发送http请求来间接调用外部程序。1.首先,在orcle...

    项目中有个需求是数据库自动定时扫描数据库,给符合要求的用户发送推送消息,这就需要在存储过程中自动调用发送推送的程序,由于程序复杂,所以利用orcle 的pl/sql发送http请求来间接调用外部程序。

    1.首先,在orcle中创建发送http请求的java代码。

    java source文件夹是用来存放java方法的,里面的代码通过orale中的jdk编译,可以在存储过程中直接运行。

    f52db63ae20a9883c6b651131bffc6ec.png

    在文件夹中新建类HttpInvoker,其实就是普通的HttpClient发送post请求的java方法,注意开头要写create or replace and compile java source named httpinvoker as。create or replace and compile java source named httpinvoker as

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    import java.io.PrintWriter;

    import java.net.URL;

    import java.net.HttpURLConnection;

    import java.net.URLConnection;

    import java.util.*;

    import java.net.URLEncoder;

    public class HttpInvoker

    {

    public static String sendRequest(String name, String userId,String orderNum) throws Exception{

    //处理参数

    String re="";

    re="订单‘"+name+"’已选中你,快去接单吧";

    Map p=new HashMap();

    //全体发送pushtype为ALL,不写target

    p.put("pushType","ALIAS");

    p.put("alert",re);

    p.put("target",userId);

    p.put("msgCode","1005");

    p.put("orderNum",orderNum);

    //活动id

    p.put("activityId","");

    String s="";

    for (Map.Entry entry : p.entrySet()) {

    s+="&"+entry.getKey()+"="+entry.getValue();

    }

    s=s.substring(1);

    //请求地址

    String url="http://112.64.35.222:9002/itcast/jpush/push";

    //请求参数

    String param=s;

    //发送post请求代码开始

    PrintWriter out = null;

    BufferedReader in = null;

    String result = "";

    try {

    URL realUrl = new URL(url);

    // 打开和URL之间的连接

    URLConnection conn = realUrl.openConnection();

    // 设置通用的请求属性

    conn.setRequestProperty("accept", "application/json, text/javascript, */*; q=0.01");

    conn.setRequestProperty("Accept-Encoding", "gzip, deflate");

    conn.setRequestProperty("Connection", "keep-alive");

    conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");

    conn.setRequestProperty("Content-Length", "80");

    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");

    conn.setRequestProperty("user-agent",

    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

    // 发送POST请求必须设置如下两行

    conn.setDoOutput(true);

    conn.setDoInput(true);

    // 获取URLConnection对象对应的输出流

    OutputStreamWriter outWriter = new OutputStreamWriter(conn.getOutputStream(), "utf-8");

    out = new PrintWriter(outWriter);

    // 发送请求参数

    out.print(param);

    // flush输出流的缓冲

    out.flush();

    // 定义BufferedReader输入流来读取URL的响应

    in = new BufferedReader(

    new InputStreamReader(conn.getInputStream(),"UTF-8"));

    String line;

    while ((line = in.readLine()) != null) {

    result += line;

    }

    } catch (Exception e) {

    System.out.println("发送 POST 请求出现异常!"+e);

    e.printStackTrace();

    result=e.getMessage();

    }

    //使用finally块来关闭输出流、输入流

    finally{

    try{

    if(out!=null){

    out.close();

    }

    if(in!=null){

    in.close();

    }

    }

    catch(IOException ex){

    ex.printStackTrace();

    }

    }

    return result;

    }

    }

    2.在functions文件夹中创建调用java程序的过程

    987658977967599ae5d6fd1f9830a3ed.png

    function 和procedure存储过程很像,不过function必须返回一个结果,procedure可以返回也可以不反回create or replace function HttpInvoker(name VARCHAR2, userId VARCHAR2 ,orderNum VARCHAR2) return VARCHAR2

    as language java name

    --加密函数

    'HttpInvoker.sendRequest (java.lang.String,java.lang.String,java.lang.String) return java.lang.String';

    注意我创建的是function,所以必须返回结果,如果你创建的是procedure,则可以不返回

    3.在你的存储过程代码中调用functionIV_RESULT:=HttpInvoker(orderInfo.order_name,IV_TAKER_USER_ID,orderInfo.order_num);

    在需要调用的地方调用,传入参数即可

    4.这时你test测试时会发现connection连接时报错,根本发送不出去,这是因为没有给用户配置权限

    java.security.AccessControlException: the Permission (java.net.SocketPermission localhost:10000 listen,resolve) has not been granted to RADIUS. The PL/SQL to grant this is dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission', 'localhost:10000', 'listen,resolve' )

    解决办法:https://blog..net/lianzhang861/article/details/80618382

    5.如果还不行,可能是acl的问题

    定义ACL,若没有ACL,则无法访问网络。

    [sql] view plaincopy--定义ACL 取名:httprequestpermission.xmlBEGINdbms_network_acl_admin.create_acl(acl         => 'httprequestpermission.xml',DESCRIPTION => 'Normal Access',principal   => 'CONNECT',is_grant    => TRUE,PRIVILEGE   => 'connect',start_date  => NULL,end_date    => NULL);END;[sql] view plaincopy--查看ACL是否增加成功SELECTany_pathFROMresource_viewwhereany_pathlike'/sys/acls/%.xml';--给用户增加acl权限,这里是 SD_JY 注意是大写,小写不识别begindbms_network_acl_admin.add_privilege(acl     =>'httprequestpermission.xml',principal  => 'SD_JY',is_grant   => TRUE,privilege  => 'connect',start_date => null,end_date   => null);end;--添加对应主机 ,将对应主机和端口添加到ACL。这里是 192.168.0.156 和 8080 ,这个ip和端口要和上面存储过程中定义的地址一致begindbms_network_acl_admin.assign_acl(acl        => 'httprequestpermission.xml',host       => '192.168.0.156',lower_port => 8080,upper_port => NULL);end;

    ACL的增加过程为:建立新的acl文件,对该文件中,用户授权,对该文件中,URL和端口授权。

    可查看对应的ACL信息是否添加上[sql] view plaincopySELECTacl,principal,privilege,is_grant,TO_CHAR(start_date, 'DD-MON-YYYY')ASstart_date,TO_CHAR(end_date, 'DD-MON-YYYY')ASend_dateFROMdba_network_acl_privileges;

    展开全文
  • 项目中有个需求是数据库自动定时扫描数据库,给符合要求的用户发送推送消息,这就需要在存储过程中自动调用发送推送的程序,由于程序复杂,所以利用orcle 的pl/sql发送http请求来间接调用外部程序。1.首先,在orcle...

    项目中有个需求是数据库自动定时扫描数据库,给符合要求的用户发送推送消息,这就需要在存储过程中自动调用发送推送的程序,由于程序复杂,所以利用orcle 的pl/sql发送http请求来间接调用外部程序。

    1.首先,在orcle中创建发送http请求的java代码。

    java source文件夹是用来存放java方法的,里面的代码通过orale中的jdk编译,可以在存储过程中直接运行。


    在文件夹中新建类HttpInvoker,其实就是普通的HttpClient发送post请求的java方法,注意开头要写create or replace and compile java source named httpinvoker as。

    create or replace and compile java source named httpinvoker as
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.net.HttpURLConnection;
    import java.net.URLConnection;
    import java.util.*;
    import java.net.URLEncoder;
    
    public class HttpInvoker
    {
        
         public static String sendRequest(String name, String userId,String orderNum) throws Exception{
             //处理参数
            String re=""; 
            re="订单‘"+name+"’已选中你,快去接单吧";
          
            Map<String,String> p=new HashMap<String,String>();
            //全体发送pushtype为ALL,不写target
            p.put("pushType","ALIAS");
            p.put("alert",re);
            p.put("target",userId);
            p.put("msgCode","1005");
            p.put("orderNum",orderNum);
            //活动id
            p.put("activityId","");
            String s="";
            for (Map.Entry<String, String> entry : p.entrySet()) {
                s+="&"+entry.getKey()+"="+entry.getValue();
            }
            s=s.substring(1);
            //请求地址
            String url="http://112.64.35.222:9002/itcast/jpush/push";
            //请求参数
            String param=s;       
             //发送post请求代码开始
             PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "application/json, text/javascript, */*; q=0.01");
                conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
                conn.setRequestProperty("Connection", "keep-alive");
                conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");
                conn.setRequestProperty("Content-Length", "80");
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
                conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");
                    
                conn.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                OutputStreamWriter outWriter = new OutputStreamWriter(conn.getOutputStream(), "utf-8");  
                out = new PrintWriter(outWriter);
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream(),"UTF-8"));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!"+e);
                e.printStackTrace();
                result=e.getMessage();
            }
            //使用finally块来关闭输出流、输入流
            finally{
                try{
                    if(out!=null){
                        out.close();
                    }
                    if(in!=null){
                        in.close();
                    }
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
            return result;
        }
        
    }

    2.在functions文件夹中创建调用java程序的过程


    function 和procedure存储过程很像,不过function必须返回一个结果,procedure可以返回也可以不反回

    create or replace function HttpInvoker(name VARCHAR2, userId VARCHAR2 ,orderNum VARCHAR2) return    VARCHAR2
          as language java name
          --加密函数
          'HttpInvoker.sendRequest (java.lang.String,java.lang.String,java.lang.String) return java.lang.String';

    注意我创建的是function,所以必须返回结果,如果你创建的是procedure,则可以不返回

    3.在你的存储过程代码中调用function

    IV_RESULT:=HttpInvoker(orderInfo.order_name,IV_TAKER_USER_ID,orderInfo.order_num);

    在需要调用的地方调用,传入参数即可

    4.这时你test测试时会发现connection连接时报错,根本发送不出去,这是因为没有给用户配置权限

    java.security.AccessControlException: the Permission (java.net.SocketPermission localhost:10000 listen,resolve) has not been granted to RADIUS. The PL/SQL to grant this is dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission', 'localhost:10000', 'listen,resolve' )

    解决办法:https://blog.csdn.net/lianzhang861/article/details/80618382

    5.如果还不行,可能是acl的问题

    定义ACL,若没有ACL,则无法访问网络。

    1. --定义ACL 取名:httprequestpermission.xml  
    2.   
    3. BEGIN  
    4.     dbms_network_acl_admin.create_acl(acl         => 'httprequestpermission.xml',  
    5.                                       DESCRIPTION => 'Normal Access',  
    6.                                       principal   => 'CONNECT',  
    7.                                       is_grant    => TRUE,  
    8.                                       PRIVILEGE   => 'connect',  
    9.                                       start_date  => NULL,  
    10.                                       end_date    => NULL);  
    11. END;  
    1. --查看ACL是否增加成功  
    2. SELECT any_path  
    3. FROM resource_view   
    4. where any_path  like '/sys/acls/%.xml'  
    5. ;  
    6.   
    7. --给用户增加acl权限,这里是 SD_JY 注意是大写,小写不识别  
    8. begin  dbms_network_acl_admin.add_privilege(acl     => 'httprequestpermission.xml',  
    9.                                          principal  => 'SD_JY',  
    10.                                          is_grant   => TRUE,  
    11.                                          privilege  => 'connect',  
    12.                                          start_date => null,  
    13.                                          end_date   => null);  
    14. end;  
    15.   
    16.   
    17. --添加对应主机 ,将对应主机和端口添加到ACL。这里是 192.168.0.156 和 8080 ,这个ip和端口要和上面存储过程中定义的地址一致  
    18. begin  
    19.     dbms_network_acl_admin.assign_acl(acl        => 'httprequestpermission.xml',  
    20.                                       host       => '192.168.0.156',  
    21.                                       lower_port => 8080,  
    22.                                       upper_port => NULL);  
    23. end;  

    ACL的增加过程为:建立新的acl文件,对该文件中,用户授权,对该文件中,URL和端口授权。

    可查看对应的ACL信息是否添加上

    1. SELECT  acl,  
    2.        principal,  
    3.        privilege,  
    4.        is_grant,  
    5.        TO_CHAR(start_date, 'DD-MON-YYYY'AS start_date,  
    6.        TO_CHAR(end_date, 'DD-MON-YYYY'AS end_date  
    7.   FROM dba_network_acl_privileges;  




    展开全文
  • -=-=-=-=-=-=-=-=方法被调用-=-=-=-=-=-=-=-=-= function JudgeExist(p_budgetid in varchar2) return number is v_count number(2); begin select count(1) into v_count from project_budget ...

    -=-=-=-=-=-=-=-=方法被调用-=-=-=-=-=-=-=-=-=
    在这里插入图片描述

    function JudgeExist(p_budgetid in varchar2) return number is
        v_count number(2);
      begin
        select count(1)
          into v_count
          from  project_budget
         where budgetid = p_budgetid
           and isdel = 0;
        return v_count;
      end;
    
    

    在这里插入图片描述

     procedure AddProjectBuget(p_returnValue out number,
                                    p_budgetid    in varchar2, --项目预算表数据的唯一id
                                    p_projectid   in varchar2, --项目id
                                    p_projectname in varchar2, --项目名称                        
                                    p_expendtime  in varchar2, --支出日期
                                    p_usage       in varchar2, --用途
                                    p_totalbudget in number, --预算金额(元)
                                    p_spendbudget in number, --支出金额(元)                                
                                    p_applicant   in varchar2, --申请人
                                    p_addperson   in varchar2) --创建人
      
       is
        v_count number(2);
      begin
        v_count := JudgeExist(p_budgetid);
        if v_count = 0 then
          insert into project_budget
            (projectid,
             projectname,
             createtime,
             expendtime,
             totalbudget,
             spendbudget,
             applicant,
             remainbudget,
             usage,
             addperson,
             isdel)
          values
            (p_projectid,
             p_projectname,
             sysdate,
             to_date(p_expendtime, 'yyyy-MM-dd'),
             p_totalbudget,
             p_spendbudget,
             p_applicant,
             p_totalbudget - p_spendbudget, --剩余金额(元)=预算金额(元)-支出金额(元)
             p_usage,
             p_addperson,
             0);
          p_returnValue := 1; --如果添加成功,返回1
        else
          p_returnValue := -2; --如果添加失败,返回-2
        end if;
      
        commit;
      exception
        when others then
          begin
            raise_application_error(-20999,
                                    '程序出错,错误代码:' || sqlcode || '错误信息:' ||
                                    sqlerrm);
            p_returnValue := -1;
            rollback;
          end;
      end;
    

    -=-=-=-=-=-=-=-=存储过被调用-=-=-=-=-=-=-=-=-=
    在这里插入图片描述

     procedure TestDemo(p_returnValue out number, p_budgetid in varchar2) is
        v_count number(2);
      begin
        select count(1)
          into v_count
          from vcom_project_budget
         where budgetid = p_budgetid
           and isdel = 0;
        p_returnValue := v_count;
      end;
    

    在这里插入图片描述

      /*
      || 编辑集时通项目预算表 
      || lj  2019/12/27
      */
    
      procedure UpdProjectBuget(p_returnValue  out varchar2,
                                    p_budgetid     in varchar2, --项目预算表数据的唯一id
                                    p_projectid    in varchar2, --项目id
                                    p_projectname  in varchar2, --项目名称                        
                                    p_expendtime   in varchar2, --支出日期
                                    p_usage        in varchar2, --用途
                                    p_totalbudget  in number, --预算金额(元)
                                    p_spendbudget  in number, --支出金额(元)
                                    p_applicant    in varchar2, --申请人
                                    p_modityperson in varchar2) --修改人 
       is
        v_count number(2);
      begin
        -- v_count := JudgeExist(p_budgetid);
        TestDemo(p_returnValue => v_count, p_budgetid => p_budgetid);
        if v_count = 0 then
          p_returnValue := -2; --如果不存在就无法修改,返回-2
          return;
        end if;
        update  project_budget
           set projectid    = p_projectid,
               projectname  = p_projectname,
               expendtime   = to_date(p_expendtime, 'yyyy-MM-dd'),
               usage        = p_usage,
               totalbudget  = p_totalbudget,
               spendbudget  = p_spendbudget,
               remainbudget = p_totalbudget - p_spendbudget, --剩余金额(元)=预算金额(元)-支出金额(元)
               applicant    = p_applicant,
               modityperson = p_modityperson,
               modityptime  = sysdate
         where budgetid = p_budgetid;
        p_returnValue := 1; --修改成功,返回1
        commit;
      exception
        when others then
          begin
            raise_application_error(-20999,
                                    '程序出错,错误代码:' || sqlcode || '错误信息:' ||
                                    sqlerrm);
            p_returnValue := -1;
            rollback;
          end;
      end;
    
    
    展开全文
  • 返回单个值的函数, 可以当变量用, 比如 select dbo.函数名(参数1, 参数2, ...) from ...where abc = dbo.函数名(参数1, 参数2...) 返回表的函数, 可以当数据表来使用, 比如 select * from dbo....
  • create or replace function ...我要在存储过程调用该函数,并且给几个变量赋值,怎么不能用如下语句 select CalculategWorkIntensity() into q1,q2,q3,q4,q5,q6,q7 他怎么提示说参数过多呀? 应该怎么做呀?
  • 有些存储过程非默认的 dbo,而是带架构 schema名的。此时通过 sp_helptext 读取存储过程内容时,应如下操作: sp_helptext [架构名.存储过程名] 两边用中括号包起来。 备忘 转载于:...
  • 以上是存储过程,有个表变量,但用VB.net调用时,如何把一个表作为参数传送给这个存储过程呢? 求大家指教。 我就是想实现批量查询,我把txt的文件导入DataGridView控件里显示出来。然后再实现批量查询。
  • '设置command调用类型是存储过程 (adCmdSPStoredProc = 4) CmdSP.CommandType = adCmdSPStoredProc '往command 对象中加参数 '定义存储过程有直接返回值,并且是个整数,省缺值是4 CmdSP.Parameters.Append ...
  • 大家好,我是菜鸟一枚,今天第一次来CSDN论坛发帖,大家多多关照哈[img=...我在RAISE EX的时候出错,这是为嘛,异常不定义在过程如何解决啊?
  • mysql调用存储过程的方法:可以利用CALL语句来调用存储过程,语法为【CALL sp_name([parameter])】。调用存储过程可以使程序执行效率更高,增强程序的可重用性和维护性。MySQL调用存储过程必须要使用call语句调用,...
  • // 检查是否存在更多结果集 } 分类: MySql 2010-03-10 13:55 147人阅读 评论(0) 收藏 举报 分页功能在任何应用中都比较常见,而 Mysql 的存储过程分页必须通过动态 sql 来执行。分页对应的 offset 和 row_count ...
  • Java如何实现对存储过程调用:1、不带输出参数的create procedure getsum@n int =0asdeclare @sum intdeclare @i intset @sum=0set @i=0while @i<=@n beginset @sum=@sum+@iset @i=@i+1endprint 'the sum is '+...
  • 这里是java调用存储过程。packagecom.lijianbo.procedure;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Types;/***@author*存储过程MySQL*/...
  • 此文章主要向大家描述的是Python对MySQL存储过程进行调用的正确操作步骤,以及在其实际操作中值得我们大家注意的事项的描述,你如果对其有兴趣的话你就可以点击以下的文章进行观看了。环境:1.MySQL5.0 或者以上支持...
  • 在各种数据库框架中,ibatis算是其中不错的一种,小伙伴们知道使用ibatis调用存储过程如何实现吗?下面听小编来讲解一下吧。1、首先,定义好你所需存储过程CREATEORREPLACEPROCEDUREproc_test(v_domain_idinnumber,...
  • 存储过程return与output区别 共同点:都返回值(但return只能返回int类型)  不同点: 1.output是定义变量是不是可以返回值  2.output没有return从查询或过程中无条件退出的工功  3.return返回值在函数和过程...
  • 触发器与存储过程互调 --触发器如何调用存储过程 create trigger test on table for insert as exec 存储过程名 go --存储过程如何调用触发器 crea...
  • 存储过程是干什么的,自己百度,百度上讲的比我讲的好。为什么要用存储过程,这样可以提高效率。废话少说,直接上代码:首先说一下语法:在mysql中写存储过程DELIMITER $$CREATE/*[DEFINER = { user | CURRENT_USER ...
  • 现在想要同过job定时的推送数据然后通过jdbc实现和SqlServer数据的数据交互,现在的问题就是如何在oracle存储过程调用java
  • mysql5.7如何调用写好的存储过程创建存储过程test_proccreate procedure test_proc()begin TODOend 调用存储过程call test_proc();只有在你最落魄时,才会知道谁是为你担心的笨蛋,谁是形同陌路的混蛋。如何创建...
  • 1 首先创建一个数据表(我这边用的是mysql5.7):create table students(id int primary key auto_increment,username varchar(11),age int,salary int)表中数据如下:然后创建存储过程:-- test01方法的调用的储存...
  • 展开全部这样:CREATEPROCEDUREsp_add(a int, b int,outc int)beginset c=a+ b;end;调用过程:call sp_add (1,2,@32313133353236313431303231363533e4b893e5b19e...扩展资料:注意事项存储过程(stored procedure)是...
  • java调用存储过程 存储过程的创建以及执行 存储过程带参数
  • 啥也不说,直接上代码了!...2.3. import java.sql.CallableStatement;4.5. import java.sql.Connection;6.7. import java.sql.DriverManager;8.9. import java.sql.SQLException;10.11. import java.sql.T...
  • 在本文中,我们将讨论使用存储过程来检索报表的数据,使用MS SQL示例,将展示如何在报表中创建和使用函数。Transact SQL允许创建存储过程和函数,存储过程用于自动执行任何操作,这些功能旨在扩展查询功能,它们可以...
  • VBA中如何调用ADO调用ORACLE存储过程 VBA中如何调用ADO调用ORACLE存储过程 VBA中如何调用ADO调用ORACLE存储过程
  • 在Java中如何调用存储过程在Java中如何调用存储过程在Java中如何调用存储过程

空空如也

空空如也

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

存储过程如何调用