ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ITPUB老帖子:小招技巧2: 快速写存储过程

ITPUB老帖子:小招技巧2: 快速写存储过程

原创 Linux操作系统 作者:oldwain 时间:2019-03-22 14:09:06 0 删除 编辑
小招技巧2: 快速写存储过程 (发贴日期:2003.03.10)

写存储过程时, 经常要INSERT ... SELECT ....或者 UPDATE ...=....,

表的列数少时无所谓, 列数多的时候列出这些列名就很烦人.

把下面的脚本保存到手边, 能大大提高效率.


-- 1.
-- 定义表列对应的变量
-- v_COLNAME TABLE_NAME.COLNAME%TYPE
--

SELECT 'v_' || COLUMN_NAME, TABLE_NAME || '.' || COLUMN_NAME || '%TYPE;'
FROM COLS WHERE TABLE_NAME = '&TNAME'
ORDER BY COLUMN_ID
/


-- 2.
-- 列出表列以及对应的变量
-- 做insert .. select时, 分别copy 左侧和右侧即可
-- (已经有了逗号, 所以不用再每行都添加了, 不过记得把最后一行的逗号去掉)
-- COLNAME, v_COLNAME,
--

SELECT COLUMN_NAME || ', ' , 'v_' || COLUMN_NAME || ', '
FROM COLS WHERE TABLE_NAME = '&TNAME'
ORDER BY COLUMN_ID
/


-- 3.
-- 用于UPDATE语句
-- COLNAME = v_COLNAME,
--

SELECT COLUMN_NAME || ' = ' , 'v_' || COLUMN_NAME || ', '
FROM COLS WHERE TABLE_NAME = '&TNAME'
ORDER BY COLUMN_ID
/


-- 4.
-- 使用CURSOR时, 用于INSERT语句(假设CURSOR的名字叫v_SOURCE_ROW)
-- 用法同2
-- ALIAS.COLNAME, CURSOR.COLNAME,
--

SELECT '&ALIAS' || COLUMN_NAME || ', ' , 'v_SOURCE_ROW.' || COLUMN_NAME || ', '
FROM COLS WHERE TABLE_NAME = '&TNAME'
ORDER BY COLUMN_ID
/


小招技巧系列:

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

请登录后发表评论 登录
全部评论

注册时间:2001-09-24

  • 博文量
    49
  • 访问量
    39072