12
返回列表 发新帖
楼主: top518

[精华] get_table_id

[复制链接]
论坛徽章:
1
参与物流供应链俱乐部活动纪念
日期:2009-06-08 10:02:43
11#
 楼主| 发表于 2003-2-14 10:37 | 只看该作者

获取表中的最大编码(前面加有自定义的表名的缩写头)

--获取表中的最大编码(前面加有自定义的表名的缩写头)
create or replace function sys_get_nextid_g
(l_table_name in varchar2,l_col_name in varchar2)
return varchar2
is
l_string varchar2(200);
ls_head varchar2(10);
cursor_name number;
l_no varchar2(20);
l_date varchar2(8);
l_number number;
begin
  l_string :='select Max('||l_col_name||') from '||l_table_name;

  cursor_name := DBMS_SQL.OPEN_CURSOR;
  DBMS_SQL.PARSE(cursor_name, l_string, DBMS_SQL.native);
  dbms_sql.define_column(cursor_name,1,l_no,20);
  l_no := DBMS_SQL.EXECUTE(cursor_name);
  
  if dbms_sql.fetch_rows(cursor_name) > 0 then
     dbms_sql.column_value(cursor_name,1,l_no);
  End if;
  
  --execute immediate l_string into l_no;
  select to_char(sysdate,'yyyymmdd') into l_date from dual;
  
  select s.bill_sym_id into ls_head
  from sys_bill_type s
  where s.bill_id = l_table_name;
  
  If substr(substr(l_no,-12),1,8) = l_date then
     l_number := to_number(substr(l_no,-4)) + 1;
  Elsif substr(substr(l_no,-12),1,8) <> l_date then
        l_number := 1;
  End if;
  l_no := Rtrim(ls_head) || l_date || ltrim(to_char(l_number,'0000'));
  
  return l_no;
end;

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2003-2-14 11:16 | 只看该作者

看书吧.

要写SQL先看看书.
推荐:<<ORACLE 9I 从入门到精通>>-----中国水利水电出版社
里面对动态的SQL讲解的很细,例子很多.
为什么我买什么书,单位同事就跟着买??????郁闷啊!
难道我是BOOK TEST READER?

使用道具 举报

回复
论坛徽章:
1
参与物流供应链俱乐部活动纪念
日期:2009-06-08 10:02:43
13#
 楼主| 发表于 2003-2-17 13:35 | 只看该作者
在 sqlplus 里怎么查表或数据库的死锁情况

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
14#
发表于 2003-2-17 14:38 | 只看该作者
select * from v$lock;
select * from v$locked_object;

综合v$session,v$lock,v$locked_object等视图来查看这些信息

使用道具 举报

回复
论坛徽章:
1
参与物流供应链俱乐部活动纪念
日期:2009-06-08 10:02:43
15#
 楼主| 发表于 2003-2-19 14:31 | 只看该作者

请教while ...loop的用法

declare
cursor pay_a ....
begin
        open pay_a;
        fetch pay_a into relating_id, match_amt;
        exit when pay_a%notfound;
while  match_remain > 0 loop
           update         oppbill....

           insert into APVOUCHSRC        .....
                match_remain := match_remain - match_amt;
   
                if sqlca.sqlcode <> 0 then
                  close apVouchsrc_ta;
                        return -1;
           end if;
end loop;
return 1;
end;
请教这样写法是否对,为什么提示错误?

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
16#
发表于 2003-2-19 19:50 | 只看该作者
你再仔細看看﹐你的邏輯都有錯誤。
語法結構上都沒做到有始有終。看不懂。

使用道具 举报

回复
论坛徽章:
1
参与物流供应链俱乐部活动纪念
日期:2009-06-08 10:02:43
17#
 楼主| 发表于 2003-2-28 09:45 | 只看该作者

oracle8.0里语法是否有问题为什么'123456'更新了,变量没有更新到salereport 中,而且

select   sum(a.qty),
         sum(a.sale),
         sum(a.tax),
         sum(a.ap)
into qtyHM,saleHM,taxHM,apHM
FROM apdetail a;

update salereport s
  set
    s.qtyhm = qtyHM,
    s.salehm = saleHM,
    s.taxhm = taxHM,
    s.aphm = '123456';

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表