标准sql语句注意事项
(暂适用于sqlserver,sybase,db2的odbc的接口)
1. INSERT 语句
写法为 :INSERT INTO 表名(字段,….)VALUES(值,….)
2. DELETE 语句
写法为:DELETE FROM 表名 WHERE ….
如果删除数据为0行,则某些数据库sqlca.sqlcode的返回值为-1,需要在DELTETE 以前加以SELECT语句判断是否有真正的删除行。
3. UPDATE 语句
写法为:UPDATE 表名 se t 字段 = 值 WHERE ……
不支持写法为:UPDATE 表名 se t 字段 = 值 FROM 表名WHERE ……
如果更新数据为0行,则某些数据库sqlca.sqlcode的返回值为-1,需要在UPDATE 以前加以SELECT语句判断是否有真正的更新行。
4. 存取字符串时,应该用单引号,不能用双引号
5. 存取时间的标准字符串写法为“{ts’ yyyy-mm-dd hh:mm:’}”
6. 外连接的写法为:{oj master_table left outer join primary_table on (连接条件) }
例如:SELECT MS_YJ01.YJXH,MS_YJ01.TJHM,MS_BRDA.MZHM FROM {oj MS_YJ01 LEFT OUTER JOIN MS_BRDA ON ( MS_YJ01.ID = MS_BRDA.ID) };
但某些数据库还不支持多重连接的标准写法,示例如下:
SELECT MS_YJ01.YJXH,MS_YJ01.TJHM,MS_BRDA.MZHM ,GY_KSDM.KSMC FROM {oj MS_YJ01 LEFT OUTER JOIN MS_BRDA ON ( MS_YJ01.ID = MS_BRDA.ID)LEFT OUTER JOIN GY_KSDM(MS_YJ01.SJKS = GY_KSDM.KSDM)};
7. 在游标中不能使用sql语句
8. 在一个事务中不能有 CREATE TABLE,CREATE INDEX,DROP TABLE 语句
9.在保存实数时,应该用decimal{n} 类型(明确指出小数的位数),不能用double 或 real
10.某些数据库在sql语句中对大小写敏感。
11.某些数据库在sql语句中两个字符串不能相加
12.数值列中最好有默认值,如有null 值,则会sum统计出错
13.在保存数据时,不管有没有默认值,最好在程序中显色指定表中不能为null的列,因为某些数据库odbc驱动程序,不会自动置默认值。