SQLServer与Oracle区别_第1页
SQLServer与Oracle区别_第2页
SQLServer与Oracle区别_第3页
SQLServer与Oracle区别_第4页
SQLServer与Oracle区别_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL,ORACLE,语法,归纳,SQL,ORACLE,语法,归纳数据类型比较类型名称OracleSQLServer比较字符数据类型CHARCHAR都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb变长字符数据类型VARCHAR2VARCHAROracle里面最大长度为4kb,SQLServer里面最大长度为8kb根据字符集而定的固定长度字符串NCHARNCHAR前者最大长度2kb后者最大长度4kb根据字符集而定的可变长度字符串NVARCHAR2NVARCHAR二者最大长度都为4kb日期和时间数据类型DATE有Datetime和Smalldatetim

2、e两种在oracle里面格式为DMY在SQLSerser里面可以调节,默认的为MDY数字类型NUMBER(P,S)NUMERICP(,S)Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。数字类型DECIMAL(P,S)DECIMALP(,S)Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。整数类型INTEGERINT同为整数类型,存储大小都为4个字节浮点数类型FLOATFLOAT实数类型REALREALO

3、RACLE内部函数大全以及与SQLSERVER的区别:下面是Oracle支持的字符函数和它们的MicrosoftSQLServer等价函数。函数OracleMicrosoftSQLServer把字符转换为ASCII:ASCIIASCII字串连接:CONCAT(expression+expression)把ASCII转换为字符CHR,CHAR返回字符串中的开始字符(左起)INSTR,CHARINDEX把字符转换为小写LOWERLOWER把字符转换为大写UPPERUPPER填充字符串的左边LPADN/A清除开始的空白LTRIMLTRIM清除尾部的空白RTRIMRTRIM字符串中的起始模式(patt

4、ern)INSTRPATINDEX多次重复字符串RPADREPLICATE字符串的语音表示SOUNDEXSOUNDEX重复空格的字串RPADSPACE从数字数据转换为字符数据TO_CHARSTR子串SUBSTRSUBSTRING替换字符REPLACESTUFF将字串中的每个词首字母大写INITCAPN/A翻译字符串TRANSLATEN/A字符串长度LENGTHDATELENGTHorLEN列表中最大的字符串GREATESTN/A列表中最小的字符串LEASTN/A如果为NULL则转换字串NVLISNULL日期函数下面是Oracle支持的日期函数和它们的MicrosoftSQLServer等价函数

5、。函数OracleMicrosoftSQLServer日期相加(datecolumn+/-value)orADD_MONTHSDATEADD两个日期的差(datecolumn+/-value)orMONTHS_BETWEENDATEDIFF当前日期和时间SYSDATEGETDATE()一个月的最后一天LAST_DAYN/A时区转换NEW_TIMEN/A日期后的第一个周日NEXT_DAYN/A代表日期的字符串TO_CHARDATENAME代表日期的整数TO_NUMBER(TO_CHAR)DATEPART日期舍入ROUNDCONVERT日期截断TRUNCCONVERT字符串转换为日期TO_DATE

6、CONVERT如果为NULL贝0转换日期NVLISNULL转换函数下面是Oracle支持的转换函数和它们的MicrosoftSQLServer等价函数函数OracleMicrosoftSQLServer数字转换为字符TO_CHARCONVERT字符转换为数字TO_NUMBERCONVERT日期转换为字符TO_CHARCONVERT字符转换为日期TO_DATECONVERT16进制转换为2进制HEX_TO_RAWCONVERT进制转换为16进制RAW_TO_HEXCONVERT其它行级别的函数下面是Oracle支持的其它行级别的函数以及它们的MicrosoftSQLServer等价函数。函数Or

7、acleMicrosoftSQLServer返回第一个非空表达式DECODECOALESCE当前序列值CURRVALN/A下一个序列值NEXTVALN/A用户登录账号ID数字UID-用户登录名USER用户数据库ID数字UID用户数据库名USER当前用户CURRENT_USER-用户环境(audittrail)USERENVSUSER_IDSUSER_NAMEUSER_ID-USER_NAMECURRENT_USERN/A在CONNECTBY子句中的级别LEVELN/A合计函数下面是Oracle支持的合计函数和它们的MicrosoftSQLServer等价函数。函数OracleMicrosoft

8、SQLServerAverageAVGAVGCountCOUNTCOUNTTOC o 1-5 h zMaximumMAXMAXMinimumMINMINStandarddeviationSTDDEVSTDEVorSTDEVPSummationSUMSUMVarianceVARIANCEVARorVARP条件测试Oracle的DECODE语句和MicrosoftSQLServer的CASE表达式都执行条件测试。当test_value中的值和后面的任何表达式匹配的时候,相关的值就返回。如果没有找到任何匹配的值,就返回default_value。如果没有指定default_value,在没有匹配的时

9、候,DECODE和CASE都返回一个NULL。下表显示了该语句的语法,同时给出了转换DECODE命令的示例。OracleMicrosoftSQLDECODE(test_value,expression1,value1,expression2,value2,default_value)CREATEVIEWSTUDENT_ADMIN.STUDENT_GPA(SSN,GPA)ASSELECTSSN,ROUND(AVG(DECODE(grade,A,4,A+,4.3,A-,3.7,B,3,B+,3.3,B-,2.7,C,2,C+,2.3,C-,1.7,D,1,D+,1.3,D-,0.7,0),2)FR

10、OMSTUDENT_ADMIN.GRADEGROUPBYSSNCASEinput_expressionWHENwhen_expressionTHENresult_expressionELSEelse_result_expressionENDCREATEVIEWSTUDENT_ADMIN.STUDENT_GPA(SSN,GPA)ASSELECTSSN,ROUND(AVG(CASEgradeWHENATHEN4WHENA+THEN4.3WHENA-THEN3.7WHENBTHEN3WHENB+THEN3.3WHENB-THEN2.7WHENCTHEN2WHENC+THEN2.3WHENC-THEN

11、1.7WHENDTHEN1WHEND+THEN1.3WHEND-THEN0.7ELSE0END),2)FROMSTUDENT_ADMIN.GRADEGROUPBYSSNCASE表达式可以支持用SELECT语句执行布尔测试,这是DECODE命令所不允许的。欲了解关于CASE表达式的详细信息,请参阅SQLServer联机手册。把值转换为不同的数据类型MicrosoftSQLServer的CONVERT和CAST函数都是多目标转换函数。它们提供了相似的功能,把一种数据类型的表达式转换为另一种数据类型的表达式,并且支持多种专门数据的格式。CAST(expressionASdata_type)CONVE

12、RT(datatype(length),expression,style)CAST是一个SQL-92标准的函数。这些函数执行同Oracle的TO_CHAR、TO_NUMBER、TO_DATE、HEXTORAW以及RAWTOTEXT函数相同的功能。这里所指的数据类型是任何表达式将被转换成为的系统数据类型。不能使用用户定义的数据类型。长度参数是可选的,该参数用于char、varchar、binary以及varbinary数据类型。允许的最大长度是8000。转换OracleMicrosoftSQLServer字符到数字TO_NUMBER(?)CONVERT(numeric,?)数字到字符TO_CHA

13、R(10)CONVERT(char,10)字符到日期TO_DATE(?-JUL-97)TO_DATE(?-JUL-1997,dd-mon-yyyy)TO_DATE(July4,1997,Monthdd,yyyy)CONVERT(datetime,?-JUL-97)CONVERT(datetime,?-JUL-1997)CONVERT(datetime,July4,1997)日期到字符TO_CHAR(sysdate)TO_CHAR(sysdate,ddmonyyyy)TO_CHAR(sysdate,mm/dd/yyyy)CONVERT(char,GETDATE()CONVERT(char,GET

14、DATE(),106)CONVERT(char,GETDATE(),101)16进制到2进制HEXTORAW(?F)CONVERT(binary,?F)2进制到16进制RAWTOHEX(binary_column)CONVERT(char,binary_column)请注意字符串是怎样转换为日期的。在Oracle中,缺省的日期格式模型是“DD-MON-YY”如果你使用任何其它格式,你必须提供一个合适的日期格式模型。CONVERT函数自动转换标准日期格式,不需要任何格式模型。从日期转换到字符串时,CONVERT函数的缺省输出是“ddmonyyyyhh:mm:ss:mmm(24h)。用一个数字风格

15、代码来格式化输出,使它能输出为其它类型的日期格式模型。欲了解CONVERT函数的详细信息,请参阅SQLServer联机手册。下表显示了MicrosoftSQLServer日期的缺省输出。WithoutCenturyWithCenturyStandardOutput0or100(*)Defaultmonddyyyyhh:miAM(orPM)101USAmm/dd/yy102ANSIyy.mm.dd103British/Frenchdd/mm/yy104Germandd.mm.yy105Italiandd-mm-yy106-ddmonyy107-mondd,yy108-hh:mm:ss9or109

16、(*)Defaultmillisecondsmonddyyyyhh:mi:ss:mmm(AMorPM)110USAmm-dd-yy111Japanyy/mm/dd112ISOyymmdd13or113(*)Europedefaultddmonyyyyhh:mm:ss:mmm(24h)14114-hh:mi:ss:mmm(24h)用户定义函数OraclePL/SQL函数可以在OracleSQL语句中使用。在MicrosoftSQLServer中一般可以通过其它方式来实现同样的功能。在SQLServer中可以用表中给出的查询来代替。OracleMicrosoftSQLServerSELECTSSN

17、,FNAME,LNAME,)TUITION_PAID,TUITION_PAID/GET_SUM_MAJOR(MAJOR)ASPERCENT_MAJORFROMSTUDENT_ADMIN.STUDENTSELECTSSN,FNAME,LNAME,TUITION_PAID,TUITION_PAID/SUM_MAJORASPERCENT_MAJORFROMSTUDENT_ADMIN.STUDENT,(SELECTMAJOR,SUM(TUITION_PAID)SUM_MAJORFROMSTUDENT_ADMIN.STUDENTGROUPBYMAJOR)SUM_STUDENTWHERESTUDENT.M

18、AJOR=SUM_STUDENT.MAJORCREATEORREPLACEFUNCTIONGET_SUM_MAJOR(INMAJORVARCHAR2)RETURNNUMBERASSUM_PAIDNUMBER;BEGINSELECTSUM(TUITION_PAID)INTOSUM_PAIDFROMSTUDENT_ADMIN.STUDENTWHEREMAJOR=INMAJOR;RETURN(SUM_PAID);ENDGET_SUM_MAJOR;NoCREATEFUNCTIONsyntaxisrequired;useCREATEPROCEDUREsyntax.比较操作符Oracle和Microsof

19、tSQLServer的比较操作符几乎是一样的算符OracleMicrosoftSQLServer等于(=)(=)大于(小于(=)(=)小于或等于(=)(=)不等于(!=,y(!=,y不大于,不小于N/A!,!在集合中任意成员中ININ不在集合中的任何成员中NOTINNOTIN集合中的任意值ANY,SOMEANY,SOME提交集合中的所有值!=ALL,ALL,ALL,=ALL,!=SOME,SOME,SOME,=SOME!=ALL,ALL,ALL,=ALL,!=SOME,SOME,SOME,=SOME像模式(Likepattern)LIKELIKE不像模式(Notlikepattern)NOTL

20、IKENOTLIKEX和y之间的值BETWEENxANDyBETWEENxANDy不在x和y之间的值NOTBETWEENNOTBETWEEN值存在EXISTSEXISTS值不存在NOTEXISTSNOTEXISTS值为|不为空ISNULL,ISNOTNULLSame.Also=NULL,!=NULLforbackwardcompatibility(notrecommended).模式匹配SQLServer的LIKE关键字提供了有用的通配符搜索功能,这个功能在Oracle中不支持除了所有的RDBMS都支持的()和(_)通配符以外,SQLServer还支持()和(門)通配符。()字符用来查询在一个

21、范围内的所有单个字符。例如,如果你需要查询包含一个从a到f的字符的数据,你可以这样写:“LIKEa-ff或者“LIKEabcdeff。这些附加的通配符的有效性在下表中给出。OracleMicrosoftSQLSELECT*FROMSTUDENT_ADMIN.STUDENTWHERELNAMELIKEA%ORLNAMELIKEB%ORLNAMELIKEC%SELECT*FROMSTUDENT_ADMIN.STUDENTWHERELNAMELIKEABC%人通配符用来标记那些不在特定范围内的字符。例如,如果除了a到f以外的所有字符都是可以接受的,你可以这样书写:LIKEAa-f或者LIKESbcd

22、ef。欲了解关于LIKE关键字的详细信息,请参阅SQLServer联机手册。在比较中使用NULL尽管MicrosoftSQLServer传统上支持SQL-92标准的和一些非标准的NULL行为,但是它还是支持Oracle中的NULL的用法。为了支持分布式查询,SETANSI_NULLS必须设定为ON。在进行连接的时候,SQLServer的SQLServerODBC驱动程序和OLEDB提供者自动把SETANSI_NULLS设定为ON。这个设置可以在ODBC数据源、ODBC连接属性、或者是在连接到SQLServer之前在应用程序中设置的OLEDB连接属性中进行配置。在从DB-Library应用程序中

23、连接时,SETANSI_NULLS缺省为OFF。当SETANSI_DEFAULTS为ON时,SETANSI_NULLS被允许。欲了解关于NULL用法的详细信息,请参阅SQLServer联机手册。字串连接Oracle使用两个管道符号(|)来作为字串连接操作符,SQLServer则使用加号(+)。这个差别要求你在应用程序中做小小的修改。OracleMicrosoftSQLSELECTFNAME|LNAMEASNAMEFROMSTUDENT_ADMIN.STUDENTSELECTFNAME+LNAMEASNAMEFROMSTUDENT_ADMIN.STUDENT流控制(Control-of-Flow

24、)语言流控制语言控制SQL语句执行流,语句块以及存储过程。PL/SQL和Transact-SQL提供了多数相同的结构,但是还是有一些语法差别。关键字这是两个RDBMS支持的关键字。语句OraclePL/SQLMicrosoftSQLServerTransact-SQL声明变量DECLAREDECLARE语句块BEGIN.END;BEGIN.END条件处理IF.THEN,ELSIF.THEN,ELSEENDIF;IF.BEGIN.ENDELSEBEGIN.ENDELSEIFCASEexpression无条件结束RETURNRETURN无条件结束当前程序块后面的语句EXITBREAK重新开始一个W

25、HILE循环N/ACONTINUE等待指定间隔N/A(dbms_lock.sleep)WAITFOR循环控制WHILELOOP.ENDLOOP;LABEL.GOTOLABEL;FOR.ENDLOOP;LOOP.ENDLOOP;WHILEBEGIN.ENDLABEL.GOTOLABEL程序注释/*.*/,-/*.*/,-打印输出RDBMS_OUTPUT.PUT_LINEPRINT弓I发程序错误(Raiseprogramerror)RAISE_APPLICATION_ERRORRAISERROR执行程序EXECUTEEXECUTE语句终止符Semicolon(N/A声明变量Transact-SQL

26、和PL/SQL的变量是用DECLARE关键字创建的。Transact-SQL变量用标记,并且就像PL/SQL一样,在第一次创建时,用空值初始化。OracleMicrosoftSQLDECLAREVSSNCHAR(9);VFNAMEVARCHAR2(12);VLNAMEVARCHAR2(20);VBIRTH_DATEDATE;VLOAN_AMOUNTNUMBER(12,2);DECLAREVSSNCHAR(9),VFNAMEVARCHAR2(12),VLNAMEVARCHAR2(20),VBIRTH_DATEDATETIME,VLOAN_AMOUNTNUMERIC(12,2)Transact-S

27、QL不支持TYPE和ROWTYPE变量数据类型定义。一个Transact-SQL变量不能在DECLARE命令中初始化。在MicrosoftSQLServer数据类型定义中也不能使用Oracle的NOTNULL和CONSTANT关键字。像Oracle的LONG和LONGRAW数据类型一样。文本和图形数据类型不能被用做变量定义。此外,Transact-SQL不支持PL/SQL风格的记录和表的定义。给变量赋值Oracle和MicrosoftSQLServer提供了下列方法来为本地变量赋值。OracleMicrosoftSQLAssignmentoperator(:=)SETlocal_variabl

28、e=valueSELECT.INTOsyntaxforselectingcolumnvaluesfromasinglerowSELECTlocal_variable=expressionFROM.forassigningaliteralvalue,anexpressioninvolvingotherlocalvariables,oracolumnvaluefromasinglerowFETCH.INTOsyntaxFETCH.INTOsyntax这里有一些语法示例OracleMicrosoftSQLDECLAREVSSNCHAR(9);VFNAMEVARCHAR2(12);VLNAMEVARC

29、HAR2(20);BEGINVSSN:=?SELECTFNAME,LNAMEINTOVFNAME,VLNAMEFROMSTUDENTSWHERESSN=VSSN;END;DECLAREVSSNCHAR(9),VFNAMEVARCHAR(12),VLNAMEVARCHAR(20)SETVSSN=?SELECTVFNAME=FNAME,VLNAME=LNAMEFROMSTUDENTSWHERESSN=VSSN语句块OraclePL/SQL和MicrosoftSQLServerTransact-SQL都支持用BEGIN.END术语来标记语句块。Transact-SQL不需要在DECLARE语句后使用

30、一个语句块。-如果在MicrosoftSQLServer中的IF语句和WHILE循环中有多于一个语句被执行,则需要使用BEGINEND语句块。OracleMicrosoftSQLDECLAREDECLAREVARIABLES.BEGIN-THISISREQUIREDSYNTAXPROGRAM_STATEMENTS.IF.THENSTATEMENT1;STATEMENT2;STATEMENTN;ENDIF;WHILE.LOOPSTATEMENT1;STATEMENT2;STATEMENTN;ENDLOOP;END;-THISISREQUIREDSYNTAXDECLAREDECLAREVARIAB

31、LES.BEGIN-THISISOPTIONALSYNTAXPROGRAM_STATEMENTS.IF.BEGINSTATEMENT1STATEMENT2STATEMENTNENDWHILE.BEGINSTATEMENT1STATEMENT2STATEMENTNENDEND-THISISREQUIREDSYNTAX条件处理MicrosoftSQLServerTransact-SQL的条件语句包括IF和ELSE,但不包括OraclePL/SQL中的ELSEIF语句。可以用嵌套多重IF语句来到达同样的效果。对于广泛的条件测试,用CASE表达式也许更容易和可读一些。OracleMicrosoftSQ

32、LDECLAREVDEGREE_PROGRAMCHAR(1);VDEGREE_PROGRAM_NAMEVARCHAR2(20);BEGINVDEGREE_PROGRAM:=UIFVDEGREE_PROGRAM=UTHENVDEGREE_PROGRAM_NAME:=UndergraduateELSIFVDEGREE_PROGRAM=MTHENVDEGREE_PROGRAM_NAME:=MastersELSIFVDEGREE_PROGRAM=PTHENVDEGREE_PROGRAM_NAME:=PhDELSEVDEGREE_PROGRAM_NAME:=UnknownENDIF;END;DECLAR

33、EVDEGREE_PROGRAMCHAR(1),VDEGREE_PROGRAM_NAMEVARCHAR(20)SELECTVDEGREE_PROGRAM=USELECTVDEGREE_PROGRAM_NAME=CASEVDEGREE_PROGRAMWHENUTHENUndergraduateWHENMTHENMastersWHENPTHENPhD.ELSEUnknownEND重复执行语句(循环)OraclePL/SQL提供了无条件的LOOP和FORLOOP。Transact-SQL贝提供了WHILE循环和GOTO语句。WHILEBoolean_expressionsql_statement|s

34、tatement_blockBREAKCONTINUEWHILE循环需要测试一个布尔表达式来决定一个或者多个语句的重复执行。只要给定的表达式结果为真,这个(些)语句就一直重复执行下去。如果有多个语句需要执行,则这些语句必须放在一个BEGINEND块中。OracleMicrosoftSQLDECLARECOUNTERNUMBER;BEGINCOUNTER:=0WHILE(COUNTER5)LOOPCOUNTER:=COUNTER+1;ENDLOOP;END;DECLARECOUNTERNUMERICSELECTCOUNTER=1WHILE(COUNTER5)BEGINSELECTCOUNTER=

35、COUNTER+1END语句的执行可以在循环的内部用BREAK和CONTINUE关键字控制。BREAK关键字使WHILE循环无条件的结束,而CONTINUE关键字使WHILE循环跳过后面的语句重新开始。BREAK关键字同OraclePL/SQL中的EXIT关键字是等价的。而在Oracle中没有和CONTINUE等价的关键字GOTO语句Oracle和MicrosoftSQLServer都有GOTO语句,但是语法不同。GOTO语句使Transact-SQL跳到指定的标号处运行,在GOTO语句后指定标号之间的任何语句都不会被执行。OracleMicrosoftSQLGOTOlabel;GOTOlab

36、elPRINT语句Transact-SQL的PRINT语句执行同PL/SQL的RDBMS_OUTPUT.put_line过程同样的操作。该语句用来打印用户给定的消息。用PRINT语句打印的消息上限是8,000个字符。定义为char或者varchar数据类型的变量可以嵌入打印语句。如果使用其它数据类型的变量,则必须使用CONVERT或者CAST函数。本地变量、全局变量可以被打印。可以用单引号或者双引号来封闭文本。从存储过程返回MicrosoftSQLServer和Oracle都有RETURN语句。RETURN使你的程序从查询或者过程中无条件的跳出。RETURN是立即的、完全的、并且可以用于从过程

37、、批处理或者语句块的任意部分跳出。在REUTRN后面的语句将不会被执行。OracleMicrosoftSQLRETURNexpression:RETURNinteger_expression弓丨发程序错误(Raisingprogramerrors)Transact-SQL的RAISERROR返回一个用户定义的错误消息,并且设置一个系统标志来记录发生了一个错误。这个功能同PL/SQL的raise_application_error异常处理器的功能是相似的。RAISERROR语句允许客户重新取得sysmessages表的一个入口,或者用用户指定的严重性和状态信息动态的建立一条消息。在被定义后,消息

38、被送回客户端作为系统错误消息。RAISERROR(msg_id|msg_str,severity,state,argument1,argument2)WITHoptions在转换你的PL/SQL程序时,也许用不着使用RAISERROR语句。在下面的示例代码中。PL/SQL程序使用raise_application_error异常处理器,但是Transact-SQL程序则什么也没用。包括raise_application_error异常处理器是为了防止PL/SQL返回不明确的未经处理的异常错误消息。作为代替,当一个不可预见的问题发生的时候,异常处理器总是返回Oracle错误消息。当一个Trans

39、act-SQL失败时,它总是返回一个详细的错误消息给客户程序。因此,除非需要某些特定的错误处理,一般是不需要RAISERROR语句的。OracleMicrosoftSQLCREATEORREPLACEFUNCTIONDEPT_ADMIN.DELETE_DEPT(VDEPTINVARCHAR2)RETURNNUMBERASBEGINDELETEFROMDEPT_ADMIN.DEPTWHEREDEPT=VDEPT;RETURN(SQL%ROWCOUNT);EXCEPTIONWHENOTHERTHENRAISE_APPLICATION_ERROR(-20001,SQLERRM);ENDDELETE_

40、DEPT;/CREATEPROCEDUREDEPT_ADMIN.DELETE_DEPTVDEPTVARCHAR(4)ASDELETEFROMDEPT_DB.DBO.DEPTWHEREDEPT=VDEPTRETURNROWCOUNTGO实现游标Oracle在使用SELECT语句时总是需要游标,不管从数据库中请求多少行。在MicrosoftSQLServer,SELECT语句并不把在返回客户的行上附加游标作为缺省的结果集合。这是一种返回数据给客户应用程序的有效的方法。SQLServer为游标函数提供了两种接口。当在Transact-SQL批处理或者存储过程中使用游标的时候,SQL语句可用来声明、打

41、开、和从游标中抽取,就像定位更新和删除一样。当使用来自DB-Library、ODBC、或者OLEDB程序的游标时,SQLServer显式的调用内建的服务器函数来更有效的处理游标。当从Oracle输入一个PL/SQL过程时,首先判断是否需要在Transact-SQL中采用游标来实现同样的功能。如果游标仅仅返回一组行给客户程序,就使用非游标的SELECT语句来返回缺省的结果集合。如果游标用来从行中一次取得一个数据给本地过程变量,你就必须在Transact-SQL中使用游标。语法下表显示了使用游标的语法。操作OracleMicrosoftSQLServer声明一个游标CURSORcursor_nam

42、e(cursor_parameter(s)ISselect_statement;DECLAREcursor_nameCURSORLOCAL|GLOBALFORWARD_ONLY|SCROLLSTATIC|KEYSET|DYNAMIC|FAST_FORWARDREAD_ONLY|SCROLL_LOCKS|OPTIMISTICTYPE_WARNINGFORselect_statementFORUPDATEOFcolumn_name,n打开一个游标OPENcursor_name(cursor_parameter(s);OPENcursor_name从游标中提取(Fetching)FETCHcurso

43、r_nameINTOvariable(s)FETCHFROMcursor_nameINTOvariable(s)更新提取行UPDATEtable_nameSETstatement(s).WHERECURRENTOFcursor_name;UPDATEtable_nameSETstatement(s)WHERECURRENTOFcursor_name删除提取行DELETEFROMtable_nameWHERECURRENTOFcursor_name;DELETEFROMtable_nameWHERECURRENTOFcursor_name关闭游标CLOSEcursor_name;CLOSEcur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论