精华内容
下载资源
问答
  • 存储过程写法

    2016-03-21 10:33:00
    存储过程写法的具体实例 关键字:输出参数,游标,删除,查询,插入,修改,循环,动态临时表,异常处理 (所有表名及字段名随意写的,执行环境:DB2数据库) CREATE OR REPLACE PROCEDURE 数据库实例名.存储过程...

    存储过程写法的具体实例

    关键字:输出参数,游标,删除,查询,插入,修改,循环,动态临时表,异常处理

    (所有表名及字段名随意写的,执行环境:DB2数据库)

    CREATE OR REPLACE PROCEDURE 数据库实例名.存储过程名 (
    OUT OV_RETVAL INTEGER,--整型输出变量
    OUT OV_RETMSG VARCHAR(4000),---字符串型输出变量
    IN kh_RQ TIMESTAMP,--变量_日期
    IN kh_BM DECIMAL(18,0) )--变量_部门
    BEGIN not ATOMIC
    --声明变量
    DECLARE SQLCODE INT default 0; --异常判断标志
    DECLARE temp_table_sql VARCHAR (4000);--创建临时表的sql
    DECLARE temp_index_sql VARCHAR (4000);--创建临时表拼接指标字段的sql
    DECLARE temp_index_sql_all VARCHAR (4000);--创建临时表拼接指标字段的相加之后的sql

    DECLARE KHflag integer default 0; --循环变量
    DECLARE KHryflag integer default 0; --循环变量(往临时表取(临时表的字段数据)值时循环取字段名)
    DECLARE temp_insertID VARCHAR (20);--取字段名
    DECLARE gs_gs VARCHAR (80);--业务表取出的相关业务数据
    DECLARE gs_khcolid DECIMAL(18,0);--业务表取出的相关业务数据
    DECLARE gs_duty_id DECIMAL(18,0);--业务表取出的相关业务数据
    DECLARE KHgsflag integer default 0; --取业务数据的循环变量

    --查询业务数据放入游标gs_name中
    DECLARE
    gs_name CURSOR FOR
    select A,B,C from TABLE where C=kh_RQ and D=kh_BM ;
    --查询出业务数据放入游标index_name中
    DECLARE
    index_name CURSOR FOR
    SELECT a
    FROM table
    WHERE b = kh_RQ AND c = kh_BM;


    --异常处理
    DECLARE exit HANDLER FOR SQLEXCEPTION

    BEGIN

    if sqlcode<0 then

    rollback;--

    set OV_RETVAL='-1';--

    set OV_RETMSG='A:失败 '||temp_table_sql;--

    return;--

    end if;--

    END;


    set OV_RETVAL='0';--
    set OV_RETMSG='成功';--


    --构建创建临时表业务字段的循环语句
    select count(*) into KHflag FROM table

    WHERE a = kh_RQ AND b = kh_BM;--获取循环变量的最大值
    --删除业务表已有数据(数据准备)
    delete from table where to_char(RQ,'yyyy-mm-dd')=kh_RQ and DEPARTMENTID=kh_BM;


    open index_name;--打开游标
    set temp_index_sql_all='';--拼接创建临时表字段的sql之和


    while KHflag>0 do
    fetch index_name into temp_index_sql;--循环取创建临时表需要的字段数据放入变量temp_index_sql
    set temp_index_sql=temp_index_sql || ' DECIMAL(18, 4) ,';
    set temp_index_sql_all=temp_index_sql_all||temp_index_sql;--拼接创建临时表字段sql
    SET KHflag = KHflag - 1;--自减1
    end while;--

    set temp_index_sql_all=SUBSTR(temp_index_sql_all,1,LENGTH(temp_index_sql_all)-1);--去除最后面的逗号( ,)

    close index_name;--

    set temp_table_sql='declare global temporary table SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||' (rq TIMESTAMP,khcolid INTEGER,RS_RYJCXX_ID INTEGER NOT NULL,SON_NAME VARCHAR(100),departmentid DECIMAL(5, 0),duty_id DECIMAL(5, 0),'|| temp_index_sql_all || ' ) ';--创建动态临时表sql

    execute immediate temp_table_sql;--执行创建动态临时表

    --执行向临时表插入日期,姓名等业务信息的sql

    set temp_table_sql='insert into SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||'(a,b,c,d,e) select A.a,B.b,A.c,A.d,A.e
    from tablea A ,tableb B where A.a=to_date('''||TO_CHAR(kh_RQ,'YYYY-MM-DD')||''',''yyyy-mm-dd'') and A.b='||TO_CHAR(kh_BM)||' and A.f=2
    and A.a=B.a  and A.b=B.b
    and exists(select 1 from tablec D where A.a=D.a and A.a=D.a
    and A.c=D.c
    and D.x=B.x)';

    execute immediate temp_table_sql; --执行插入数据

    ----根据业务id将对应的字段数据值从业务表中取到临时表里

    select count(*) into KHryflag FROM table

    WHERE a = kh_RQ AND b= kh_BM;--获取循环变量的最大值

    open index_name;--打开游标

    while KHryflag>0 do


    fetch index_name into temp_insertID;--
    set temp_table_sql='update SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||' set '||temp_insertID||' = (select COALESCE(a.a,0) from tablea a ,tableb b where a.c= b.cand a.a=to_date('''||TO_CHAR(kh_RQ,'YYYY-MM-DD')||''',''yyyy-mm-dd'')
    and a.c= SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||'.c and a.d=SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||'.d and b.a=a.a
    and b.e='''||temp_insertID||''' and a.b='||TO_CHAR(kh_BM)||' )';


    execute immediate temp_table_sql;--执行修改临时表单个字段数据的sql

    SET KHryflag = KHryflag - 1;--自减1

    end while;--


    close index_name;--

    ---往业务表里插入数据(字段数据值都赋值为0)
    set temp_table_sql =' insert into table(a,b,c,d,e,f,g,h)
    select r for 序列索引,b,2,d,e,f,g,0
    from SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||'';
    execute immediate temp_table_sql;

    --更新业务表目前最大id值,加一
    update table set a=(select max(b)+1 from c) where d='sdfsdfsd';

    select count(*) into KHgsflag FROM table

    WHERE a=kh_RQ and b=kh_BM and c=2;--获取循环变量的最大值

    open gs_name;--打开游标

    while KHgsflag>0 do

    fetch gs_name into a,b,c;--循环取出游标内容(有三列)依次放入三个变量中

    set temp_table_sql='update ca set a.c=(select '|| to_char(gs_gs) ||'
    from SESSION.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||' b where a.c=b.c and b.c='||to_char(gs_khcolid)||' and b.c='||
    to_char(s)||' and a.s=b.s and a.s=b.s)
    where a.s=to_date('''||TO_CHAR(kh_RQ,'YYYY-MM-DD')||''',''yyyy-mm-dd'') and a.s='||TO_CHAR(kh_BM)||' and a.s='||to_char(s)||' and a.s='||to_char(s)||' ';


    execute immediate temp_table_sql;

    SET KHgsflag = KHgsflag - 1;--自减1

    end while;--
    close gs_name;--
    set temp_table_sql='DROP TABLE session.GZ_EJKH_FYHZ_'|| to_char(kh_BM) ||'';--释放临时表
    execute immediate temp_table_sql;
    commit;--

    END;

    转载于:https://www.cnblogs.com/luojun/p/5300880.html

    展开全文
  • MySQL存储过程写法可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体...

    都说不懂数据库的程序员不是合格的程序员,那么你知道MySQL存储过程应该怎么写吗?

    ec8655b5e3751aa6cbc990e98935641e.png

    MySQL存储过程写法

    可以使用 CREATE PROCEDURE 语句创建存储过程。

    数据库存储过程语法格式如下:

    CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

    DELIMITER //

    CREATE PROCEDURE myproc(OUT s int)

    BEGIN

    SELECT COUNT(*) INTO s FROM students;

    END

    //

    DELIMITER ;

    例:创建一个简单的存储过程

    -- ----------------------------

    -- Procedure structure for `proc_adder`

    -- ----------------------------DROP PROCEDURE IF EXISTS `proc_adder`;

    DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)BEGIN

    #Routine body goes here...

    DECLARE c int;

    if a is null then set a = 0;

    end if;

    if b is null then set b = 0;

    end if;set sum = a + b;END

    ;;

    DELIMITER ;

    MySQL的优点

    1. 它使用的核心线程是完全多线程,支持多处理器。

    2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。

    3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。

    4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。

    5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。

    6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。

    7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。

    展开全文
  • 存储过程 写法

    2009-08-06 17:12:00
    strSQL = "exec daycount " + Session("grade") + ",'" + Session("police") + "','" + AToDay + "'" CREATE Procedure daycount@Grad int,@police Varchar(10),@currenttime varchar(20) asif @Grad=0beginselec....
     strSQL = "exec daycount " + Session("grade") + ",'" + Session("police") + "','" + AToDay + "'"

    CREATE Procedure daycount
    @Grad int,
    @police Varchar(10),
    @currenttime varchar(20)

    as
    if @Grad=0
    begin
    select (select hotelname from info_hotel where info_hotel.hotelcode=Info_Guest.hotelcode) as hotelname,Count(guestcode) as UpDataNum from info_Guest where substring(LoginTime,1,8)=@currenttime and hotelcode in (select PH.hotelcode from Info_hotel as PH where PH.ting=@police and hotelstatus = 1) group by HotelCode  ORDER BY UpDataNum
    end
      
    GO

    转载于:https://www.cnblogs.com/liufei88866/archive/2009/08/06/1540579.html

    展开全文
  • ibatis 存储过程写法

    2019-10-06 22:01:49
    ibatis 存储过程写法 <?xmlversion="1.0"encoding="utf-8"?><sqlMapnamespace="DepartmentInfoModel"xmlns="http://ibatis.apache.org...
    <?xml version="1.0" encoding="utf-8" ?>
    <sqlMap namespace="DepartmentInfoModel" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  >

      <alias>
        <typeAlias alias="DepartmentInfoModel" type="Dscf.Global.Employee.Model.DepartmentInfoModel,Dscf.Global" />
      </alias>

      <!--门店树 传参-->
      <parameterMaps>
        <parameterMap id="selectMap_Dept_DeptInfo" class="DepartmentInfoModel">
          <parameter property="Idenid" column="Idenid"/>
        </parameterMap>
      </parameterMaps>

      <resultMaps>
        <resultMap id="selectMap_T_DepartmentInfo" class="DepartmentInfoModel">
          <result property="DepId" column="DepId"/>
          <result property="DepName" column="DepName"/>
          <result property="ParentDepId" column="ParentDepId"/>
          <result property="DepCode" column="DepCode"/>
          <result property="CustomerServicePhone" column="CustomerServicePhone"/>
          <result property="RevolvingLoanPhone" column="RevolvingLoanPhone"/>
          <result property="EarlyRepayPhone" column="EarlyRepayPhone"/>
          <result property="Email" column="Email"/>
          <result property="SignAddress" column="SignAddress"/>
          <result property="SignZipCode" column="SignZipCode"/>
          <result property="IsDeleted" column="IsDeleted"/>
          <result property="SignCity" column="SignCity"/>
          <result property="IsEnable" column="IsEnable"/>
          <result property="LastOperateId" column="LastOperateId"/>
          <result property="LastUpdateTime" column="LastUpdateTime"/>
          <result property="CreateTime" column="CreateTime"/>
          <result property="OperateId" column="OperateId"/>
          <result property="IsReceiveEmail" column="IsReceiveEmail"/>
        </resultMap>

        <!--门店树 返回值 -->
        <resultMap id="selectMap_T_DepartmentInfoTree" class="DepartmentInfoModel">
          <result property="DepId" column="DepId"/>
          <result property="SignZipCode" column="SignZipCode"/>
          <result property="IsDeleted" column="IsDeleted"/>
          <result property="SignCity" column="SignCity"/>
          <result property="IsEnable" column="IsEnable"/>
          <result property="LastOperateId" column="LastOperateId"/>
          <result property="LastUpdateTime" column="LastUpdateTime"/>
          <result property="CreateTime" column="CreateTime"/>
          <result property="OperateId" column="OperateId"/>
          <result property="DepName" column="DepName"/>
          <result property="ParentDepId" column="ParentDepId"/>
          <result property="DepCode" column="DepCode"/>
          <result property="CustomerServicePhone" column="CustomerServicePhone"/>
          <result property="RevolvingLoanPhone" column="RevolvingLoanPhone"/>
          <result property="EarlyRepayPhone" column="EarlyRepayPhone"/>
          <result property="Email" column="Email"/>
          <result property="SignAddress" column="SignAddress"/>

          <result property="ParentName" column="ParentName"/>
          <result property="sort" column="sort"/>
          <result property="level" column="level"/>
          <result property="IsReceiveEmail" column="IsReceiveEmail"/>
        </resultMap>
      </resultMaps>


      <statements>
        <!-- 查询  需要后动修改分页时的排序字段 -->
        <select id="select_T_DepartmentInfo" resultMap="selectMap_T_DepartmentInfo"   resultClass="DepartmentInfoModel"      parameterClass="DepartmentInfoModel">
          SELECT
          <isNotNull property="TopNums">
            <![CDATA[ top $TopNums$]]>
          </isNotNull>
          MAX(row_n) over(partition by 1as TotalItems, *
          FROM
          (
          <!-- ********* 必须要修改 order by a.Id ********* -->
          SELECT ROW_NUMBER() OVER ( PARTITION BY 1 ORDER BY a.DepId) AS row_n,a.DepId,a.DepName,a.ParentDepId,a.DepCode,a.CustomerServicePhone,a.RevolvingLoanPhone,a.EarlyRepayPhone,a.Email,a.SignAddress,a.SignZipCode,a.IsDeleted,a.SignCity,a.IsEnable,a.LastOperateId,a.LastUpdateTime,a.CreateTime,a.OperateId,a.IsReceiveEmail
          FROM  T_DepartmentInfo as a
          <dynamic prepend="where">

            <isNotNull prepend="and" property="DepId">
              <![CDATA[ a.DepId=#DepId#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="IsReceiveEmail">
              <![CDATA[ a.IsReceiveEmail=#IsReceiveEmail#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="DepName">
              <![CDATA[ a.DepName=#DepName#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="ParentDepId">
              <![CDATA[ a.ParentDepId=#ParentDepId#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="DepCode">
              <![CDATA[ a.DepCode=#DepCode#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="CustomerServicePhone">
              <![CDATA[ a.CustomerServicePhone=#CustomerServicePhone#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="RevolvingLoanPhone">
              <![CDATA[ a.RevolvingLoanPhone=#RevolvingLoanPhone#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="EarlyRepayPhone">
              <![CDATA[ a.EarlyRepayPhone=#EarlyRepayPhone#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="Email">
              <![CDATA[ a.Email=#Email#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="SignAddress">
              <![CDATA[ a.SignAddress=#SignAddress#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="SignZipCode">
              <![CDATA[ a.SignZipCode=#SignZipCode#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="IsDeleted">
              <![CDATA[ a.IsDeleted=#IsDeleted#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="SignCity">
              <![CDATA[ a.SignCity=#SignCity#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="IsEnable">
              <![CDATA[ a.IsEnable=#IsEnable#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="LastOperateId">
              <![CDATA[ a.LastOperateId=#LastOperateId#  ]]>
            </isNotNull>

            <isNotNull prepend="and" property="LastUpdateTime_B">
              <![CDATA[ a.LastUpdateTime>=#LastUpdateTime_B# ]]>
            </isNotNull>
            <isNotNull prepend="and" property="LastUpdateTime_E">
              <![CDATA[ a.LastUpdateTime<=#LastUpdateTime_E# ]]>
            </isNotNull>

            <isNotNull prepend="and" property="CreateTime_B">
              <![CDATA[ a.CreateTime>=#CreateTime_B# ]]>
            </isNotNull>
            <isNotNull prepend="and" property="CreateTime_E">
              <![CDATA[ a.CreateTime<=#CreateTime_E# ]]>
            </isNotNull>

            <isNotNull prepend="and" property="OperateId">
              <![CDATA[ a.OperateId=#OperateId#  ]]>
            </isNotNull>

            <!-- 一个例子 -->
            <!--<isNotEmpty prepend="and" property="属性名">
                           字段名 like  #属性名# 
                   </isNotEmpty>-->
          </dynamic>
          ) as a
          <dynamic prepend="where">
            <isNotNull property="PrevPageNums">
              <![CDATA[ a.row_n>$PrevPageNums$]]>
            </isNotNull>
          </dynamic>


        </select>

        <!-- 数据分析 树-->
        <procedure id="select_T_DepartmentInfoTree" parameterMap="selectMap_Dept_DeptInfo"  resultMap="selectMap_T_DepartmentInfoTree" >
          Proc_LoanStorDept
        </procedure>



        <!-- 添加 -->
        <insert id="insert_T_DepartmentInfo" parameterClass="DepartmentInfoModel">
          <selectKey property="DepId" type="post" resultClass="int">
            ${selectKey}
          </selectKey>
          INSERT INTO T_DepartmentInfo
          (
          DepName,ParentDepId,DepCode,CustomerServicePhone,RevolvingLoanPhone,EarlyRepayPhone,Email,SignAddress,SignZipCode,IsDeleted,SignCity,IsEnable,LastOperateId,LastUpdateTime,CreateTime,OperateId,IsReceiveEmail
          ) VALUES
          (
          #DepName#,#ParentDepId#,#DepCode#,#CustomerServicePhone#,#RevolvingLoanPhone#,#EarlyRepayPhone#,#Email#,#SignAddress#,#SignZipCode#,#IsDeleted#,#SignCity#,#IsEnable#,#LastOperateId#,#LastUpdateTime#,#CreateTime#,#OperateId#,#IsReceiveEmail#
          )

        </insert>

        <!-- 更新  -->
        <update id="update_T_DepartmentInfo" parameterClass="DepartmentInfoModel">
          UPDATE T_DepartmentInfo SET

          DepName=#DepName#,
          ParentDepId=#ParentDepId#,
          DepCode=#DepCode#,
          CustomerServicePhone=#CustomerServicePhone#,
          RevolvingLoanPhone=#RevolvingLoanPhone#,
          EarlyRepayPhone=#EarlyRepayPhone#,
          Email=#Email#,
          SignAddress=#SignAddress#,
          SignZipCode=#SignZipCode#,
          IsDeleted=#IsDeleted#,
          SignCity=#SignCity#,
          IsEnable=#IsEnable#,
          LastOperateId=#LastOperateId#,
          LastUpdateTime=#LastUpdateTime#,
          CreateTime=#CreateTime#,
          OperateId=#OperateId#,
          IsReceiveEmail=#IsReceiveEmail#
          <!--  -->
          WHERE T_DepartmentInfo.DepId=#DepId#
        </update>

        <!--删除-->
        <delete id="delete_T_DepartmentInfo" parameterClass="DepartmentInfoModel">
          DELETE FROM T_DepartmentInfo where DepId=#DepId#
        </delete>

        <!-- 删除-->
        <delete id="delete_flag_T_DepartmentInfo" parameterClass="DepartmentInfoModel">
          UPDATE  T_DepartmentInfo set IsDeleted = 1 where DepId=#DepId#
        </delete>
      </statements>
    </sqlMap>

     

     

     

    posted on 2016-04-25 10:46 笨小孩做开发 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/dullbaby/p/5430090.html

    展开全文
  • 写在前面这段时间工作最长接触到的就是Oracle数据库,不论查数据,还是统计、运行job,都离不开PL/SQL 存储过程,下面就整理下经常用到的知识。一、Function函数函数是执行非查询语句的方法。创建返回list的function...
  • 表名改过来,试下?create procedurce pro_insertasdeclare @allAmount double,@per double,@safeQty double,@typeid intset xact_abort onbegin transelect amount,avg_consume,sum(amount) into @mAmount,@avg_...
  • 1、在Oracle中写有返回数据集的存储过程要用游标(CURSOR),在查询语句前加 OPEN V_CUR FOR 2、没有if...else...,可以用if...end if ; 形式进行判断 3、可以在Oracle中声明一个varchar2类型的变量,用它来存放SQL...
  • oracle存储过程写法是【CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type)IS 变量1 类型(值范围);BEGIN select count...】。1、存储过程的基本语法:CREATE OR REPLACE PROCEDURE 存储过程...
  • 主要介绍了Mysql带返回值与不带返回值的2种存储过程写法,需要的朋友可以参考下
  • Oracle存储过程基本写法(组图)08-07栏目:技术TAG:oracle 存储过程oracle 存储过程oracle 存储过程的基本语法1.基本结构https://www.jhua.orgCREATE OR REPLACE PROCEDURE 存储过程名字copyright www.jhua.org( ...
  • 1.1,Oracle存储过程简介:存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的...
  • Oracle存储过程写法

    2012-05-06 19:04:47
    一、Oracle存储过程写法: 1、实例1: createorreplaceprocedurep is cursorcis select*fromemp2forupdate; begin forv_empincloop ...
  • 存储过程简介SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。...
  • oracle 存储过程oracle 存储过程的基本语法1.基本结构CREATE OR REPLACE PROCEDURE 存储过程名字(参数1 IN NUMBER,参数2 IN NUMBER) IS变量1 integer :=0;变量2 DATE;BEGINEND 存储过程名字2.SELECT INTO statement...

空空如也

空空如也

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

存储过程写法