过程中的行参不可以是定长字符串转double类型类型的变量

求教2道VB选择题。在某过程中已说明变量a为Integer类型、变量s为String类型,过程中的以下四组语句中,不能正常执行的是____。A.s=2*a+1
B.s="237"& ".11":a=sC.s=2*a>3
D.a=2:s=16400*a在程序中将变量Inta、Bl、St和D分别定义为Integer型、Boolean型、String型和Date型,下列赋值语句中,正确的是_________。A.Inta="333"+"22"
B.D=#10/05/01#C.St=5+"abc"
D.B1=#True#最好的话请解释下,歇息了!
第一题不能正常执行的是D,原因是16400*2(两个Integer型值)结果为32800,超出Integer的范围,发生溢出.其它三个选项在赋值时都会进行隐式类型转换,且都可以成功转换.第二题正确的是B,原因:A字符串连接后转换为数值型,超...
为您推荐:
扫描下载二维码VB程序设计基础_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
VB程序设计基础
上传于||暂无简介
大小:1.05MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Posts - 571,
Articles - 0,
Comments - 1161
21:04 by 潇湘隐者, ... 阅读,
&&&& ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。
在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。
查看数据库视图所包含的数据类型:SELECT * FROM DBA_TYPES WHERE OWNER IS NULL.具体细节情况参见Oracle& Database&SQL Language Quick Reference 10/11g 或
一 字符串类型
&&& 字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种.
&&& 所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。
所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间。
1.1:CHAR类型 CHAR(size [BYTE | CHAR])
CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节,你可以查看数据库参数
NLS_LENGTH_SEMANTICS的值。
SQL& show parameter nls_length_semantics;
NAME& & & & & & & & & &TYPE& & & & & &VALUE
------------------ & ----------- -----------------
nls_length_semantics& &string& & & & &&BYTE
CREATE TABLE TEST
NAME_OLD CHAR(10),
NAME_NEW CHAR(10 CHAR)
INSERT INTO TEST
( NAME_OLD, NAME_NEW)
SELECT 'ABCDEFGHIJ' , '你清除字节与字符' FROM DUAL;
INSERT INTO TEST
( NAME_OLD, NAME_NEW)
SELECT '你清除字节与字符' , 'ABCDEFGHIJ' FROM DUAL;
ORA-12899: 列 "SYS"."TEST"."NAME_OLD" 的值太大 (实际值: 24, 最大值: 10)&
注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。
如果串的长度小于或等于250(0x01~0xFA), Oracle 会使用1 个字节来表示长度。对于所有长度超过250 的串,都会在一个标志字节0xFE 后跟有两个字节来表示长度。因此,如果有一个包含&Hello World&的VARCHAR2(80),则在块中可能如图12.-1 所示
1.2: NCHAR类型
这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。另外查询时,如果字段是NCHAR类型,则需要如下书写
SELECT translated_description FROM product_descriptions
WHERE translated_name = N'LCD Monitor 11/PM';
1.3 VARCHAR类型
不要使用VARCHAR数据类型。使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。
1.4: VARCHAR2类型
变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。
1.5: NVARCHAR2类型
这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。
二. 数字类型
2.1 NUMBER类型
NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。
P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字
S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数
下面是官方文档的示例
Actual Data
Specified As
NUMBER(6,2)
NUMBER(6,1)
NUMBER(4,2)
exceeds precision
NUMBER(6,-2)
NUMBER(4,5)
NUMBER(4,5)
NUMBER(4,5)
NUMBER(2,7)
NUMBER(2,7)
NUMBER(2,5)
NUMBER(2,5)
2.2 INTEGER类型
INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。
CREATE TABLE TEST
ID INTEGER
查看表TEST的DDL定义如下所示
CREATE TABLE "SYS"."TEST"
( "ID" NUMBER(*,0)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
INSERT INTO TEST
SELECT 12.34 FROM DUAL;
INSERT INTO TEST
SELECT 12.56 FROM DUAL;
SQL& SELECT * FROM TEST;
----------
2.3 浮点数
浮点数可以有一个十进制数点任何地方从第一个到最后一个数字,或者可以在所有有没有小数点。指数可能(可选) 用于以下数量增加的范围 (例如, 1.777e-20)。刻度值不适用于浮点数字,因为可以显示在小数点后的位数的数量不受限制。
二进制浮点数不同数量的值由 Oracle 数据库内部存储的方式。使用小数精度数存储值。完全相同号码存储范围和数量由支持的精度内的所有文本。正是因为使用小数精度(数字 0 到 9) 表示文本存储文本。使用二进制精度 (数字 0 和 1) 存储二进制浮点数。这种存储方案不能代表所有确切地使用小数精度的值。频繁地,将值从十进制转换为二进制的精度时出现的错误时撤消值回从二进制转换为十进制精度。在字面 0.1 是一个这样的例子。
Oracle 数据库提供了专为浮点数的两种数值数据类型:
BINARY_FLOAT
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。
在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。
您可以指定列在表 2-4 范围内的浮点数。"数字文本"中定义了用于指定浮点数的格式。
Table 2-3 Floating Point Number Limits
Binary-Float
Binary-Double
Maximum positive finite value
3.40282E+38F
Minimum positive finite value
1.17549E-38F
2.5 FLOAT类型
FLOAT类型也是NUMBER的子类型。
Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。
三. 日期类型
日期类型用于存储日期数据,但是并不是使用一般的格式()直接存储到数据库的。
3.1 DATE类型
DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。
3.2 TIMESTAMP类型
这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位
3.3 TIMESTAMP WITH TIME ZONE类型
这是TIMESTAMP类型的变种,它包含了时区偏移量的值
3.4 TIMESTAMP WITH LOCAL TIME ZONE类型
3.5 INTERVAL YEAR TO MOTH
3.6 INTERVAL DAY TO SECOND
四. LOB类型
内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型
4.1 CLOB 数据类型
&& 它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符
4.2 NCLOB 数据类型
&& 它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。
4.3 BLOB 数据类型
&& 它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。
4.4 BFILE 数据类型
&& 二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理
五. RAW & LONG RAW类型
5.1 LONG类型
它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:
1.一个表中只有一列可以为LONG型。(Why?有些不明白)
2.LONG列不能定义为主键或唯一约束,
3.不能建立索引
4.LONG数据不能指定正则表达式。
5.函数或存储过程不能接受LONG数据类型的参数。
6.LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)
官方文档描叙如下:
The use of LONG values is subject to these restrictions:
A table can contain only one LONG column.
You cannot create an object type with a LONG attribute.
LONG columns cannot appear in WHERE clauses or in integrity constraints (except that they can appear in NULL and NOT NULL constraints).
LONG columns cannot be indexed.
LONG data cannot be specified in regular expressions.
A stored function cannot return a LONG value.
You can declare a variable or argument of a PL/SQL program unit using the LONG datatype. However, you cannot then call the program unit from SQL.
Within a single SQL statement, all LONG columns, updated tables, and locked tables must be located on the same database.
LONG and LONG RAW columns cannot be used in distributed SQL statements and cannot be replicated.
If a table has both LONG and LOB columns, then you cannot bind more than 4000 bytes of data to both the LONG and LOB columns in the same SQL statement. However, you can bind more than 4000 bytes of data to either the LONG or the LOB column.
In addition, LONG columns cannot appear in these parts of SQL statements:
GROUP BY clauses, ORDER BY clauses, or CONNECT BY clauses or with the DISTINCT operator in SELECT statements
The UNIQUE operator of a SELECT statement
The column list of a CREATE CLUSTER statement
The CLUSTER clause of a CREATE MATERIALIZED VIEW statement
SQL built-in functions, expressions, or conditions
SELECT lists of queries containing GROUP BY clauses
SELECT lists of subqueries or queries combined by the UNION, INTERSECT, or MINUS set operators
SELECT lists of CREATE TABLE ... AS SELECT statements
ALTER TABLE ... MOVE statements
SELECT lists in subqueries in INSERT statements
5.2 LONG RAW 类型,能存储2GB 的原始二进制数据(不用进行字符集转换的数据)
5.3 RAW类型
用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2,000字节的信息
六. ROWID & UROWID类型
在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。
例如,索引组织表行地址存储在索引的叶子,可以移动。
例如,外部表的ROWID(如通过网关访问DB2表)不是标准的ORACLE的rowid。
ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids,。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。
创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT ...ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。VB第2章 Visual Basic语言基础_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VB第2章 Visual Basic语言基础
||文档简介
总评分4.2|
浏览量54242
&&V​B​第章​ ​V​i​s​u​a​l​ ​B​a​s​i​c​语​言​基​础
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
你可能喜欢数组长度为什么不能是变量_百度知道
数组长度为什么不能是变量
上说C语言数组长度不能用变量。这是怎么回事,编译和运行都没有问题,但是我在使用的过程中发现是可以的
printf(&pause&quot,也是不正确的,&a[2]);}编译和运行都没有问题,即使为n赋值了;scanf(&;%d&%d&quot。可是课本上说因为n是变量;);,a[2]);system(&int a[n],与课本有出入我是这样定义的:main(){int n=10。可我编译和运行都没有问题
提问者采纳
若int n = 9;int a[n],但是那个n始终是个变量,基本是不会让你编译通过的!,编译可能会通过,只能固定的申请a[9],记得给好评;这样使用,不知道你是用的是什么编译器,根据编译器的不同,若n的值改变;亲。所以,则数组大小也会改变,在对其使用的时候就会使用到数组以外的内容,对程序会造成隐患,来确定你所申请的空间的大小!因为定义数组时!,分配空间是需要一个固定的值
提问者评价
其他类似问题
0&#39,包括3个字符和字符串结束符'这里的str属于一个柔性数组;另一种情况就是出现在结构体里面,比如。不知道我说那么多你是否明白,是不定长的,如果想要用变量就需要用到动态数组,后面的需要使用的时候才分配。但是有些特殊情况:struct A{
int n,比如。这个结构体大小就只有4个字节,不然编译器根本不知道你要分配的内存有多大,其他地方定义的数组必须要分配好数组的大小;abc&这个只是你没写大小而已;;},中括号里面可以是空的;
char str[]。这种只能在结构体里面使用,详情可以百度百科看柔性数组是什么意思:char str[] = &quot定义数组必须是需要知道定多大的,也就是new一段内存出来;&#92,但编译器帮你分配了4个字节的大小给str
为您推荐:
其他6条回答
要知道长度因为在定义声明数组的时候,因为需要知道长度来确定系统为这个数组分配多大的空间。不知道你用的什么编译器,我用vc++6
我用的是devc++
那段程序可以正确运行?
可以正确运行啊,不然就没有疑问了。
或者说我的编译器老了,或者说我人品不行了
如果想生成可变数组则需要在程序中,利用内存分配函数和指针进行动态分配,一般情况下使用定长 数组。
数组长度如果是未定义变量的话,长度过长,溢出了。长度可以为确定的定义变量如for(int i=1;i&=7;i++){
cin&&a[i];}就是可以的
c99标准支持数组长度为变量,你用的是较新的编译器
这是规定!无规矩不成方圆,就像为什么汽车见红灯要停一样
你是怎么使用的?
我是这样定义的:main(){
scanf(&%d&,&a[2]);
printf(&%d&,a[2]);
system(&pause&);}
你已经定义你的数组长度是10了啊,后面那个a[2]是数组中下标为2实际是数组的第三个元素类似的定义方式还有#include &stdio.h&#define N 100/*定义数组最大长度为100*/int main(){
int i,a[N],n;
//int a[n];
scanf(&%d&,&n);
for(i=0;i&n;i++)
scanf(&%d&,&a[i]);
for(i=0;i&n;i++)
printf(&%d &,a[i]);
return 0;}
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 文件夹类型不可以新建 的文章

 

随机推荐