解决方案 »
- 这样 sql怎么写
- 关于读取orcl里日志记录问题,请高手帮忙????????
- Oracle 10g 中如何对一个表进行排他锁定 而且需要锁定一定时间
- oracle 10G 的 默认创建表空间的数据文件的路径如何设置?
- oracle存储过程操作相邻记录
- 那位高人知道lncupw函数的形式,如返回值,参数等,在下谢谢了
- 我是菜鸟,需要帮忙,(帮忙看看下面的语句的问题)
- 两个表中选取数据的问题?急!谢谢!
- OMS已经配好,也可登入,无法通过Inteligence搜索器搜索到节点,提示"代理服务器已经删除",为什么?
- 在LINUX9.0上安装ORACLE9i时,当跳到UNIX Group Name时,不论你填还是不填,点下一步是都会报错!
- 請問 請問ORACLE EBS 與ORACLE REPORT 的關係?
- 求expdp和impdp的用法,屡试不爽啊!在线等!
没什么冗余的代码啊,逻辑很清晰啊,执行很慢?第二段UPDATE 的这里 字段 replytime
如果可以写成这样就好了。字段 asktime 和 replytime 这里 /* Formatted on 2014/9/12 16:33:25 (QP5 v5.227.12220.39754) */
CREATE OR REPLACE PROCEDURE DEMO.PR_HELP_CONTENT (
vID IN TB_HELP.ID%TYPE,
vTITLE IN TB_HELP.TITLE%TYPE,
vKEYWORD IN TB_HELP.KEYWORD%TYPE,
vHELPID IN TB_HELP.HELPID%TYPE,
vCONTENT IN TB_HELP.CONTENT%TYPE,
vADDUSERID IN TB_HELP.ADDUSERID%TYPE,
vHOT IN TB_HELP.HOT%TYPE,
vGameId IN TB_HELP.GAMEID%TYPE,
vSortId IN TB_HELP.SORTID%TYPE,
oResInt OUT INT,
oResStr OUT VARCHAR2)
IS
/******************************************************************************
NAME: PR_HELP_CONTENT
PURPOSE: REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2014/7/28 myTEST 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords:
Object Name: PR_HELP_CONTENT
Sysdate: 2014/7/28
Date and Time: 2014/7/28, 18:29:39, and 2014/7/28 18:29:39
Username: myTEST (set in TOAD Options, Procedure Editor)
Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/
i INT;
newId INT;
newReplyTime DATE;
BEGIN
SELECT COUNT (1)
INTO i
FROM TB_HELP
WHERE ID = vID; IF i = 0 THEN
SELECT NVL (MAX (ID), 0) + 1 INTO newId FROM TB_HELP; newReplyTime := ifnull (vContent, '', SYSDATE);
INSERT INTO TB_HELP (ID,
HELPID,
KEYWORD,
TITLE,
CONTENT,
ADDUSERID,
HOT,
GAMEID,
SortId,
AskTime,
ReplyTime)
VALUES (newId,
vHELPID,
vKEYWORD,
vTITLE,
vCONTENT,
vADDUSERID,
vHOT,
vGameId,
vSortId,
SYSDATE,
newReplyTime); COMMIT; oResInt := 1;
oResStr := '插入成功';
ELSE
SELECT ifnull (content, ifnull (vContent, '', SYSDATE), replytime)
INTO newReplyTime
FROM tb_help
WHERE id = vId; UPDATE TB_HELP
SET HELPID = vHELPID,
KEYWORD = vKEYWORD,
TITLE = vTITLE,
CONTENT = vCONTENT,
ADDUSERID = vADDUSERID,
HOT = vHOT,
GameId = vGameId,
SortId = vSortId,
REPLYTIME = newReplyTime
WHERE ID = vID; COMMIT; oResInt := 1;
oResStr := '更新成功,ID:' || vID;
END IF;
EXCEPTION
WHEN OTHERS THEN
oResInt := 0;
oResStr := '系统错误';
END PR_HELP_CONTENT;
/
你的问题是什么?还是你已经解决了?oracle 不支持ifnull ……
你的问题是什么?还是你已经解决了?oracle 不支持ifnull ……
oracle可以用NVL或者NVL2来实现NVL2(expr1,expr2,expr3)Oracle在NVL()的功能上扩展,提供了NVL2函数。功能:oracle中常用函数,如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。即:NVL2(表达式,不为空设值,为空设值)。
你的问题是什么?还是你已经解决了?oracle 不支持ifnull ……
oracle可以用NVL或者NVL2来实现NVL2(expr1,expr2,expr3)Oracle在NVL()的功能上扩展,提供了NVL2函数。功能:oracle中常用函数,如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。即:NVL2(表达式,不为空设值,为空设值)。原来如此