Select hosp_cde, hosp_name from hospital_codes a, web_hosp_server_mapping b
Where a.hosp_cde *= b.hosp_cde
Select hosp_cde, hosp_name from hospital_codes a, web_hosp_server_mapping b
Where a.hosp_cde = b.hosp_cde(+)
Select hosp_cde, hosp_name
from hospital_codes a
left join web_hosp_server_mapping b on a.hosp_cde = b.hosp_cde
Create global temporary table test_table_1(
…..
)
Create private temporary table test_table_1(
…..
)
v_sql := ‘update testexecute immediate v_sql using ‘zhangsan’, 1;
_table_1 set name = :name where id= :id’;
Sybase中,Char固定长度,如hospital_cde char(3),Value小于3会在右边加空格填充,如下: 通过执行结果我们可以看到,value后面有1个空格,长度是3 | Oracle中, 需要留意varchar2(2 char) varchar2(2 byte) 主要差别表现为value为中文时 如字符集为GBK时,一个中文占2个字节,为UTF8占3个 varchar2(2 byte)能存1个中文字符 varchar2(2 char)能存2个中文字符 |
empty string & null,In
Sybase,在下面的图中我们可以看到空字符串和null不同: | In Oracle,在下面的图中我们可以看到oracle不存在空字符串,空字符串会被强制转为null (无论是sp或是table中存的数据) |
如果value超过长度,Sybase会自动截断,丢弃超出部份 (insert/update都会做同样处理) | 在Oracle和我们预期的一致,超出长度会throw error |
Sybase条件判断中的null, 在下面的code可以看到,和我们以前接触的其他语言一致 | 在下面的code可以看到,在oracle中只要有一个为null,不管是<>还是=得到的永远是false 我们要得到期望的结果,code可以改成这样 |
Sybase中,下面的sql没有order by,但实际上它会按username ASC排序 | 在Oracle中改成下面这样才能得到和Sybase相同的value |
在fc_mas_user中有很多数据,下面的sql能查到多个值,sybase会取最后一个 下面的sp可以得到最后一个value “XZY” 上面的sql没查询到记录不会出错 | oracle如果直接按sybase的方式会throw
error 在Oracle中改成下面这样才能得到和Sybase相同的value Exception when no_data_found then xxx必须和begin end一起使用,最终等价的Oracle代码: |