㈠ sql存储过程中insert的时候加char()是什么意思标识空格么
CHAR(39)代表ASCII码为39的字符,即半角的单引号
㈡ 写一个存储过程来读写表中的xml中节点的值,怎么写效率最高
PROCEDURE validate_date(p_date IN VARCHAR2, p_list_cursor OUT sys_refcursor) IS l_date VARCHAR2(40) := NULL; l_err VARCHAR2(250) := NULL; l_select VARCHAR2(4000) := NULL; p_status VARCHAR2(40) := NULL; BEGIN IF NVL(p_date, 'X') = 'X' THEN --#如果时间是空,默认当前时间'YYYY-MM-DD HH24:MI:SS' l_date := to_char(SYSDATE(),'YYYY-MM-DD HH24:MI:SS'); ---ROUTE DOES NOT EXISTS ELSE l_date:=p_date; END IF; --#查找b小于这个时间的数据 l_select := 'SELECT * FROM A WHERE B ' || CHR(39) || l_date || CHR(39); --#将接个返回。系统调用时接收(LIST) OPEN p_list_cursor FOR l_select; --#如果有错误,将错误插入到日志表 EXCEPTION WHEN OTHERS THEN l_err := SUBSTR(SQLERRM, 1, 100); p_status := 'E'; INSERT INTO errlog VALUES ('validate_date', l_err, CURRENT_DATE); commit; END;
㈢ Chr(39)是什么意思
楼上的都对………………
如果你在SQL SERVER里面这样的,是表示数据类型,长度为39的字符串
如果是在VB、DELPHI里面,就是代表Ascii码为39的字符,应该是单引号'
㈣ 这个存储过程怎么写
declare @name varchar(16)
set @name='mike'
select ''+@name+'',getdate()
'是系统定义的字符,要使用它,在其前面再加上一个转义字符'
㈤ oracle plsql的存储过程中,类似' || chr(10) || ' 的语法意思
oracle中的||是拼接字符串的意思,你说的有时候是单引号有时候是双引号估计是因为外面用了单引号或双引号,所以需要用另外一种来消除歧义。
㈥ oracle动态存储过程错误100不够++急等
declare
userid number;
str varchar2(50);
begin
select t2.hot_ntid hot_ntid
,t2.hot_ntseq hot_ntseq
,t2.hot_nttitle hot_nttitle
,t2.hot_crtuser hot_crtuser
,t2.hot_startdate hot_startdate
,t1.hot_rdid hot_rdid
,t2.hot_urlevel hot_urlevel
from hot_notice2users t1
,hot_notices t2
where t1.hot_ntid =t2.hot_ntid
and t1.hot_status = 0
and t2.hot_orgid = 0
and t2.HOT_URLEVEL = str
and t1.hot_readerid = userid;
end ;
语法上是这样的
但是你这样没有什么意义吧,没有输出呀,也没操作数据库,只是把数据查出来还没有显示呢
下面这样可以有输出,结果会显示在output页
declare
userid number;
str varchar2(50);
cursor c_cur is
select t2.hot_ntid hot_ntid
,t2.hot_ntseq hot_ntseq
,t2.hot_nttitle hot_nttitle
,t2.hot_crtuser hot_crtuser
,t2.hot_startdate hot_startdate
,t1.hot_rdid hot_rdid
,t2.hot_urlevel hot_urlevel
from hot_notice2users t1
,hot_notices t2
where t1.hot_ntid =t2.hot_ntid
and t1.hot_status = 0
and t2.hot_orgid = 0
and t2.HOT_URLEVEL = str
and t1.hot_readerid = userid;
begin
FOR c1 IN c_cur
LOOP
dbms_output.put_line(c1.hot_ntid);
dbms_output.put_line(c1.hot_ntseq);
dbms_output.put_line(c1.hot_nttitle);
dbms_output.put_line(c1.hot_crtuser);
dbms_output.put_line(c1.hot_startdate);
dbms_output.put_line(c1.hot_rdid);
dbms_output.put_line(c1.hot_urlevel);
end loop;
end ;
㈦ 存储过程 单引号
1) 可以用''''表示字符串中的一个单引号,
如:set @a = '''' + 'xxxx' + ''''
或者 set @account = '''xxxx'''
查询分析器中执行 Print ''''
结果为 '
2)用Char(39),上例变为:set @a = char(39) + 'xxxx' + char(39)
查询分析器中执行 Select char(39) + 'xxxx' + char(39)
结果为 'xxxx'
㈧ 谁能给我一个oracle存储过程的例子
你这个写成存储过程有什么用的? 检索了一些数据出来,你应该是要返回这些数据吧?应该要写个函数返回游标吧
-- 先创建一个自定义类型
create or replace package types as
type cur_type is ref cursor;
end;
-- 返回游标的函数
CREATE OR REPLACE FUNCTION f_test(
in_userId VARCHAR2 ,
in_userName VARCHAR2 )
RETURN types.cur_type
AS
v_cursor types.cur_type;
v_sql VARCHAR2(2000);
BEGIN
v_sql := 'select * from Users where 1 = 1';
IF in_userName IS NOT NULL THEN
v_sql := v_sql||'and UserName = '''||in_userName||'''';
END IF;
IF in_userId IS NOT NULL THEN
v_sql := v_sql||'and UserID = '''||in_userId||'''';
END IF;
OPEN v_cursor FOR
v_sql;
RETURN v_cursor;
END f_test;
㈨ oracle如果想写一个存储过程每天定时扫描一张表中的数据,该怎么写呢
PROCEDURE validate_date(p_date IN VARCHAR2,
p_list_cursor OUT sys_refcursor) IS
l_date VARCHAR2(40) := NULL;
l_err VARCHAR2(250) := NULL;
l_select VARCHAR2(4000) := NULL;
p_status VARCHAR2(40) := NULL;
BEGIN
IF NVL(p_date, 'X') = 'X' THEN --#如果时间是空,默认当前时间'YYYY-MM-DD HH24:MI:SS'
l_date := to_char(SYSDATE(),'YYYY-MM-DD HH24:MI:SS'); ---ROUTE DOES NOT EXISTS
ELSE
l_date:=p_date;
END IF;
--#查找b小于这个时间的数据
l_select := 'SELECT * FROM A WHERE B <' || CHR(39) ||
l_date || CHR(39);
--#将接个返回。系统调用时接收(LIST)
OPEN p_list_cursor FOR l_select;
--#如果有错误,将错误插入到日志表
EXCEPTION
WHEN OTHERS THEN
l_err := SUBSTR(SQLERRM, 1, 100);
p_status := 'E';
INSERT INTO errlog
VALUES
('validate_date',
l_err,
CURRENT_DATE);
commit;
END;
㈩ oracle 存储过程 游标
select isnull(a.姓名, b.姓名), a.手机号, isnull(a.身份证号, b.身份证号),isnull(a.住址, b.住址)
from 表1 a, 表2 b
where a.手机号=b.手机号