㈠ 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.手機號