ASCII() c1是一字符串,返回c1第一个字母的ASCII码,他的逆函数是CHR() SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122 CHR(<i>)[NCHAR_CS] i是一个数字,函数返回十进制表示的字符 select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B CONCAT(,) c1,c2均为字符串,函数将c2连接到c1的后面,如果c1为null,将返回c2.如果c2为null,则返回c1,如果c1、c2都为null,则返回null。他和操作符||返回的结果相同 select concat('slobo ','Svoboda') username from dualusernameslobo Syoboda INITCAP() c1为一字符串。函数将每个单词的第一个字母大写其它字母小写返回。单词由空格,控制字符,标点符号限制。 select INITCAP('veni,vedi,vici') Ceasar from dualCeasarVeni,Vedi,Vici INSTR(,[,<i>[,]]) c1,c2均为字符串,i,j为整数。函数返回c2在c1中第j次出现的位置,搜索从c1的第i个字符开始。当没有发现需要的字符时返回0,如果i为负数,那么搜索将从右到左进行,但是位置的计算还是从左到右,i和j的缺省值为1. select INSTR('Mississippi','i',3,3) from dualINSTR('MISSISSIPPI','I',3,3)11select INSTR('Mississippi','i',-2,3) from dualINSTR('MISSISSIPPI','I',3,3)2 INSTRB(,[,i[,j]) 与INSTR()函数一样,只是他返回的是字节,对于单字节INSTRB()等于INSTR() LENGTH() c1为字符串,返回c1的长度,如果c1为null,那么将返回null值。 select LENGTH('Ipso Facto') ergo from dualergo10 LENGTHb() 与LENGTH()一样,返回字节。 lower() 返回c的小写字符,经常出现在where子串中 select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE '%white%'COLORNAMEWinterwhite LPAD(,<i>[,]) c1,c2均为字符串,i为整数。在c1的左侧用c2字符串补足致长度i,可多次重复,如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。c2的缺省值为单空格,参见RPAD。 select LPAD(answer,7,'') padded,answer unpadded from question;PADDED UNPADDED Yes YesNO NOMaybe maybe LTRIM(,) 把c1中最左边的字符去掉,使其第一个字符不在c2中,如果没有c2,那么c1就不会改变。 select LTRIM('Mississippi','Mis') from dualLTRppi RPAD(,<i>[,]) 在c1的右侧用c2字符串补足致长度i,可多次重复,如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。c2的缺省值为单空格,其他与LPAD相似 RTRIM(,) 把c1中最右边的字符去掉,使其第后一个字符不在c2中,如果没有c2,那么c1就不会改变。 REPLACE(,[,]) c1,c2,c3都是字符串,函数用c3代替出现在c1中的c2后返回。 select REPLACE('uptown','up','down') from dualREPLACEdowntown STBSTR(,<i>[,]) c1为一字符串,i,j为整数,从c1的第i位开始返回长度为j的子字符串,如果j为空,则直到串的尾部。 select SUBSTR('Message',1,4) from dualSUBSMess SUBSTRB(,<i>[,]) 与SUBSTR大致相同,只是I,J是以字节计算。
TRANSLATE(,,) 将c1中与c2相同的字符以c3代替 select TRANSLATE('fumble','uf','ar') test from dualTEXTramble TRIM([[]] from c3) 将c3串中的第一个,最后一个,或者都删除。 select TRIM(' space padded ') trim from dual TRIMspace padded UPPER() 返回c1的大写,常出现where子串中 select name from dual where UPPER(name) LIKE 'KI%'NAMEKING CHARTORWID() c 使一个字符串,函数将c转换为RWID数据类型。 SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA') CONVERT(,[,]) c尾字符串,dset、sset是两个字符集,函数将字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集。 HEXTORAW() x为16进制的字符串,函数将16进制的x转换为RAW数据类型。 RAWTOHEX() x是RAW数据类型字符串,函数将RAW数据类转换为16进制的数据类型。 ROWIDTOCHAR() 函数将ROWID数据类型转换为CHAR数据类型。 TO_CHAR([[,) x是一个data或number数据类型,函数将x转换成fmt指定格式的char数据类型,如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。 NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string" TO_DATE([,[,) c表示字符串,fmt表示一种特殊格式的字符串。返回按照fmt格式显示的c,nlsparm表示使用的语言。函数将字符串c转换成date数据类型。 TO_MULTI_BYTE() c表示一个字符串,函数将c的担子截字符转换成多字节字符。 TO_NUMBER([,[,) c表示字符串,fmt表示一个特殊格式的字符串,函数返回值按照fmt指定的格式显示。nlsparm表示语言,函数将返回c代表的数字。 TO_SINGLE_BYTE() 将字符串c中得多字节字符转化成等价的单字节字符。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用
所以才有后面的参数来表明该集中有几个条件。
declare procedure DySql( conditions string , conds number)
is
v_cid integer;
v_do integer;
v_select varchar2(255); m_cno customers.cno%type;
m_cname customers.cname%type;
m_eno employees.eno%type;
m_ename employees.ename%type;
begin
v_cid := dbms_sql.open_cursor;
v_select := '';
v_select := 'select customers.cno,cname,employees.eno,ename
from customers,orders,employees
where customers.cno = orders.cno and
employees.eno = orders.eno';
dbms_sql.parse(v_cid , v_select , dbms_sql.v7);
dbms_sql.parse(v_cid , ' and ',dbms_sql.v7); //编译到这里出错。
dbms_sql.parse(v_cid , conditions , dbms_sql.v7);
dbms_sql.define_column(v_cid,1,m_cno);
dbms_sql.define_column(v_cid,2,m_cname,30);
dbms_sql.define_column(v_cid,3,m_eno);
dbms_sql.define_column(v_cid,4,m_ename,30);
v_do := dbms_sql.execute(v_cid);
loop
if dbms_sql.fetch_rows(v_cid) = 0 then
exit;
end if ;
dbms_sql.column_value(v_cid,1,m_cno);
dbms_sql.column_value(v_cid,2,m_cname);
dbms_sql.column_value(v_cid,3,m_eno);
dbms_sql.column_value(v_cid,4,m_ename);
dbms_output.put_line('cno :'||m_cno||' cname:'||m_cname||' eno:'||m_eno||' ename:'||m_ename);
end loop;
dbms_sql.close_cursor(v_cid);
end;
begin
DySql('employees.eno = 1001 ', 1);
end;//关键 是我 不知道 oracle pl/sql 有什么 字符串的处理 函数。 我手头的资料没有!
http://www.cnoug.org/到上面的网站去可以找到很多资料.
c1是一字符串,返回c1第一个字母的ASCII码,他的逆函数是CHR()
SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122 CHR(<i>)[NCHAR_CS]
i是一个数字,函数返回十进制表示的字符
select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B CONCAT(,)
c1,c2均为字符串,函数将c2连接到c1的后面,如果c1为null,将返回c2.如果c2为null,则返回c1,如果c1、c2都为null,则返回null。他和操作符||返回的结果相同
select concat('slobo ','Svoboda') username from dualusernameslobo Syoboda INITCAP()
c1为一字符串。函数将每个单词的第一个字母大写其它字母小写返回。单词由空格,控制字符,标点符号限制。
select INITCAP('veni,vedi,vici') Ceasar from dualCeasarVeni,Vedi,Vici INSTR(,[,<i>[,]])
c1,c2均为字符串,i,j为整数。函数返回c2在c1中第j次出现的位置,搜索从c1的第i个字符开始。当没有发现需要的字符时返回0,如果i为负数,那么搜索将从右到左进行,但是位置的计算还是从左到右,i和j的缺省值为1.
select INSTR('Mississippi','i',3,3) from dualINSTR('MISSISSIPPI','I',3,3)11select INSTR('Mississippi','i',-2,3) from dualINSTR('MISSISSIPPI','I',3,3)2 INSTRB(,[,i[,j])
与INSTR()函数一样,只是他返回的是字节,对于单字节INSTRB()等于INSTR() LENGTH()
c1为字符串,返回c1的长度,如果c1为null,那么将返回null值。
select LENGTH('Ipso Facto') ergo from dualergo10 LENGTHb()
与LENGTH()一样,返回字节。 lower()
返回c的小写字符,经常出现在where子串中
select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE '%white%'COLORNAMEWinterwhite LPAD(,<i>[,])
c1,c2均为字符串,i为整数。在c1的左侧用c2字符串补足致长度i,可多次重复,如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。c2的缺省值为单空格,参见RPAD。
select LPAD(answer,7,'') padded,answer unpadded from question;PADDED UNPADDED Yes YesNO NOMaybe maybe LTRIM(,)
把c1中最左边的字符去掉,使其第一个字符不在c2中,如果没有c2,那么c1就不会改变。
select LTRIM('Mississippi','Mis') from dualLTRppi RPAD(,<i>[,])
在c1的右侧用c2字符串补足致长度i,可多次重复,如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。c2的缺省值为单空格,其他与LPAD相似 RTRIM(,)
把c1中最右边的字符去掉,使其第后一个字符不在c2中,如果没有c2,那么c1就不会改变。 REPLACE(,[,])
c1,c2,c3都是字符串,函数用c3代替出现在c1中的c2后返回。
select REPLACE('uptown','up','down') from dualREPLACEdowntown STBSTR(,<i>[,])
c1为一字符串,i,j为整数,从c1的第i位开始返回长度为j的子字符串,如果j为空,则直到串的尾部。
select SUBSTR('Message',1,4) from dualSUBSMess SUBSTRB(,<i>[,])
与SUBSTR大致相同,只是I,J是以字节计算。
将c1中与c2相同的字符以c3代替
select TRANSLATE('fumble','uf','ar') test from dualTEXTramble TRIM([[]] from c3)
将c3串中的第一个,最后一个,或者都删除。
select TRIM(' space padded ') trim from dual TRIMspace padded UPPER()
返回c1的大写,常出现where子串中
select name from dual where UPPER(name) LIKE 'KI%'NAMEKING
CHARTORWID()
c 使一个字符串,函数将c转换为RWID数据类型。
SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA') CONVERT(,[,])
c尾字符串,dset、sset是两个字符集,函数将字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集。 HEXTORAW()
x为16进制的字符串,函数将16进制的x转换为RAW数据类型。 RAWTOHEX()
x是RAW数据类型字符串,函数将RAW数据类转换为16进制的数据类型。 ROWIDTOCHAR()
函数将ROWID数据类型转换为CHAR数据类型。 TO_CHAR([[,)
x是一个data或number数据类型,函数将x转换成fmt指定格式的char数据类型,如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string" TO_DATE([,[,)
c表示字符串,fmt表示一种特殊格式的字符串。返回按照fmt格式显示的c,nlsparm表示使用的语言。函数将字符串c转换成date数据类型。 TO_MULTI_BYTE()
c表示一个字符串,函数将c的担子截字符转换成多字节字符。 TO_NUMBER([,[,)
c表示字符串,fmt表示一个特殊格式的字符串,函数返回值按照fmt指定的格式显示。nlsparm表示语言,函数将返回c代表的数字。 TO_SINGLE_BYTE()
将字符串c中得多字节字符转化成等价的单字节字符。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用