文章
姚 鑫 · 六月 13 阅读大约需 5 分钟

第八章 其他参考资料(一)

第八章 其他参考资料(一)

默认用户名和密码(SQL)

IRIS® 数据平台提供了用于登录数据库和开始使用的默认用户名和密码。默认用户名为“_SYSTEM”(大写),密码为“sys”。

SQLCODE错误代码(SQL)

执行大多数 SQL操作都会发出SQLCODE值。发出的SQLCODE值为0100和负整数值。

  • SQLCODE=0表示SQL操作成功完成。对于SELECT语句,这通常意味着从表中成功检索数据。但是,如果SELECT执行聚合操作(例如:SELECT SUM(Myfield)),则聚合操作成功,即使myfield中没有数据,也会发出SQLCODE=0;在这种情况下,SUM返回NULL%ROWCOUNT=1
  • SQLCODE=100表示SQL操作成功,但没有找到可操作的数据。发生这种情况的原因有很多。对于SELECT,这些包括:指定表不包含数据;表不包含满足查询条件的数据;或者行检索已到达表的最后一行。对于UPDATEDELETE,它们包括:指定的表不包含数据;或者表不包含满足WHERE子句条件的数据行。在这些情况下,%ROWCOUNT=0
  • SQLCODE=-n表示错误。负整数值指定发生的错误类型。SQLCODE=-400是通用的致命错误代码。

字段约束(SQL)

字段约束指定管理字段允许的数据值的规则。一个字段可能有以下约束:
- NOT NULL非空:必须在每条记录中为该字段指定值(可接受空字符串)。
- UNIQUE唯一:如果在记录中为该字段指定值,则该值必须是唯一值(可接受的空字符串)。但是,可以为该字段创建多个没有值(NULL)的记录。
- DEFAULT默认值:必须指定一个值,否则 IRIS会为每个记录中的此字段提供一个默认值(接受空字符串)。默认值可以是NULL、空字符串或适用于该数据类型的任何其他值。
- UNIQUE NOT NULL:必须在每条记录中为该字段指定唯一的值(可接受一个空字符串)。可用作主键。
- DEFAULT NOT NULL:必须指定一个值,否 IRIS会为每个记录中的此字段提供一个默认值(可接受的空字符串)。
- UNIQUE DEFAULT唯一默认值:不推荐-必须指定唯一值,否则 IRIS会为每个记录中的此字段提供一个默认值(一个可接受的空字符串)。缺省值可以是NULL、空字符串或适用于该数据类型的任何其他值。仅当缺省值是唯一生成的值(例如,CURRENT_TIMESTAMP)时使用,或者如果缺省值仅使用一次。
- UNIQUE DEFAULT NOT NULL:不建议-必须指定唯一的值,否则 IRIS会为每个记录中的此字段提供一个默认值(一个可接受的空字符串)。缺省值可以是空字符串或适用于该数据类型的任何其他值;它不能为空。仅当缺省值是唯一生成的值(例如,CURRENT_TIMESTAMP)时使用,或者如果缺省值仅使用一次。可用作主键。
- IDENTITY: IRIS为每个记录中的该字段提供唯一的、系统生成的、不可修改的整数值。忽略其他字段约束关键字。可用作主键。

数据值必须适合该字段的数据类型。空字符串不是数值字段的可接受值。

保留字(SQL)

SQL保留字列表。

%AFTERHAVING | %ALLINDEX | %ALPHAUP | %ALTER | %BEGTRANS | 
%CHECKPRIV | %CLASSNAME | %CLASSPARAMETER | %DBUGFULL | %DELDATA | 
%DESCRIPTION | %EXACT | %EXTERNAL | %FILE | %FIRSTTABLE | %FLATTEN | 
%FOREACH | %FULL | %ID | %IDADDED | %IGNOREINDEX | %IGNOREINDICES | 
%INLIST | %INORDER | %INTERNAL | %INTEXT | %INTRANS | %INTRANSACTION | 
%KEY | %MATCHES | %MCODE | %MERGE | %MINUS | %MVR | %NOCHECK | 
%NODELDATA | %NOFLATTEN | %NOFPLAN | %NOINDEX | %NOLOCK | 
%NOMERGE | %NOPARALLEL | %NOREDUCE | %NORUNTIME | %NOSVSO | %NOTOPOPT | 
%NOTRIGGER | %NOUNIONOROPT | %NUMROWS | %ODBCIN | %ODBCOUT | 
%PARALLEL | %PLUS | %PROFILE | %PROFILE_ALL | %PUBLICROWID | %ROUTINE | 
%ROWCOUNT | %RUNTIMEIN | %RUNTIMEOUT | %STARTSWITH | 
%STARTTABLE | %SQLSTRING | %SQLUPPER | %STRING | %TABLENAME | 
%TRUNCATE | %UPPER | %VALUE | %VID
ABSOLUTE | ADD | ALL | ALLOCATE | ALTER | AND | ANY | ARE | AS | 
ASC | ASSERTION | AT | AUTHORIZATION | AVG | BEGIN | BETWEEN | 
BIT | BIT_LENGTH | BOTH | BY | CASCADE | CASE | CAST |
CHAR | CHARACTER | CHARACTER_LENGTH | CHAR_LENGTH | 
CHECK | CLOSE | COALESCE | COLLATE | COMMIT | CONNECT | 
CONNECTION | CONSTRAINT | CONSTRAINTS | CONTINUE | CONVERT | 
CORRESPONDING | COUNT | CREATE | CROSS | CURRENT | 
CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | 
CURRENT_USER | CURSOR | DATE | DEALLOCATE | DEC | DECIMAL | 
DECLARE | DEFAULT | DEFERRABLE | DEFERRED | DELETE | DESC | 
DESCRIBE | DESCRIPTOR | DIAGNOSTICS | DISCONNECT | DISTINCT | 
DOMAIN | DOUBLE | DROP | ELSE | END | ENDEXEC | ESCAPE | EXCEPT | 
EXCEPTION | EXEC | EXECUTE | EXISTS | EXTERNAL | EXTRACT | 
FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FULL | 
GET | GLOBAL | GO | GOTO | GRANT | GROUP | HAVING | HOUR | 
IDENTITY | IMMEDIATE | IN | INDICATOR | INITIALLY | 
INNER | INPUT | INSENSITIVE | INSERT | INT | INTEGER | INTERSECT | 
INTERVAL | INTO | IS | ISOLATION | JOIN | LANGUAGE | LAST | 
LEADING | LEFT | LEVEL | LIKE | LOCAL | LOWER | MATCH | MAX | MIN | 
MINUTE | MODULE | NAMES | NATIONAL | NATURAL | NCHAR | 
NEXT | NO | NOT | NULL | NULLIF | NUMERIC | OCTET_LENGTH | OF | ON | 
ONLY | OPEN | OPTION | OR | OUTER | OUTPUT | OVERLAPS | 
PAD | PARTIAL | PREPARE | PRESERVE | PRIMARY | PRIOR | PRIVILEGES | 
PROCEDURE | PUBLIC | READ | REAL | REFERENCES | RELATIVE | 
RESTRICT | REVOKE | RIGHT | ROLE | ROLLBACK | ROWS | 
SCHEMA | SCROLL | SECOND | SECTION | SELECT | SESSION_USER | 
SET | SHARD | SMALLINT | SOME | SPACE | SQLERROR | SQLSTATE | 
STATISTICS | SUBSTRING | SUM | SYSDATE | SYSTEM_USER | TABLE | 
TEMPORARY | THEN | TIME | TIMEZONE_HOUR | TIMEZONE_MINUTE | 
TO | TOP | TRAILING | TRANSACTION | TRIM | TRUE | UNION | UNIQUE | 
UPDATE | UPPER | USER | USING | VALUES | VARCHAR | VARYING | WHEN | 
WHENEVER | WHERE | WITH | WORK | WRITE 

描述

在SQL中,某些字是保留的。不能将SQL保留字用作SQL标识符(如表、列、AS别名或其他实体的名称),除非:
- 该单词用双引号("word")分隔,并且支持分隔的标识符。

该列表仅包含在此意义上保留的那些单词;它不包含所有SQL关键字。上面列出的几个单词以"%"字符开头,表示它们是 SQL专有扩展关键字。通常,不建议使用以"%"开头的单词作为表名和列名等标识符,因为将来可能会添加新的 SQL扩展关键字。

可以通过调用IsReserve vedWord()方法来检查某个字是否为SQL保留字,如下例所示。将保留字指定为引号字符串;保留字不区分大小写。$SYSTEM.SQL.IsReserve vedWord()返回布尔值。

/// d ##class(PHA.TEST.SQLFunction).ReservedWord()
ClassMethod ReservedWord()
{
    w !,"Reserved?: ",$SYSTEM.SQL.IsReservedWord("VARCHAR")
    w !,"Reserved?: ",$SYSTEM.SQL.IsReservedWord("varchar")
    w !,"Reserved?: ",$SYSTEM.SQL.IsReservedWord("VarChar")
    w !,"Reserved?: ",$SYSTEM.SQL.IsReservedWord("FRED")
}
DHC-APP> d ##class(PHA.TEST.SQLFunction).ReservedWord()

Reserved?: 1
Reserved?: 1
Reserved?: 1
Reserved?: 0

此方法也可以作为存储过程从ODBC或JDBC调用:%SYSTEM.SQL_IsReservedWord("nnnn")

0
0 5
讨论 (0)1
登录或注册以继续