mysql怎么定义变量?

mysql怎么定义变量?,第1张

下面是一个简单的 存储过程的例子.

DECLARE v_index INT

定义一个 名称为 v_index 的变量, 类型为 INT

MYSQL 变量定义应该只能在 存储过程, 函数里面定义.

不像 Oracle / SQL Server , 一个 BEGIN / END 里面就可以定义/执行了。

mysql>DELIMITER //

mysql>CREATE PROCEDURE TestWhile()

->BEGIN

-> DECLARE v_index INT

->

-> SET v_index = 0

->

-> WHILE v_index <5 DO

->SET v_index = v_index + 1

->SELECT v_index

-> END WHILE

->

->END//

Query OK, 0 rows affected (0.00 sec)

测试一下, 好像是可行的呀!

mysql> select @test := 1

+------------+

| @test := 1 |

+------------+

|          1 |

+------------+

1 row in set (0.00 sec)

mysql> select * from test_main

+----+-------+

| id | value |

+----+-------+

|  1 | ONE   |

|  2 | TWO   |

|  3 | THREE |

+----+-------+

3 rows in set (0.00 sec)

mysql> select * from test_main where id > @test

+----+-------+

| id | value |

+----+-------+

|  2 | TWO   |

|  3 | THREE |

+----+-------+

2 rows in set (0.00 sec)

昨天一个同事的程序的除了问题,怎么都调不通,一开始以为是hibernate的问题,后来发现问题是他在一个数据表里用了index作为字段名,但是index是mysql的关键字,呵呵,有点粗心啦. 查了一下,关键字(有的是保留字 )还真是不少.在MySQL中,下表中的字显式被保留。其中大多数字进制被标准SQL用作列名和/或表名(例如,GROUP)。少数被保留了,因为MySQL需要它们,保留字被引起来后可以用作识别符。出

ADDALLALTER

ANALYZEANDAS

ASCASENSITIVEBEFORE

BETWEENBIGINTBINARY

BLOBBOTHBY

CALLCASCADECASE

CHANGECHARCHARACTER

CHECKCOLLATECOLUMN

CONDITIONCONNECTIONCONSTRAINT

CONTINUECONVERTCREATE

CROSSCURRENT_DATECURRENT_TIME

CURRENT_TIMESTAMPCURRENT_USERCURSOR

DATABASEDATABASESDAY_HOUR

DAY_MICROSECONDDAY_MINUTEDAY_SECOND

DECDECIMALDECLARE

DEFAULTDELAYEDDELETE

DESCDESCRIBEDETERMINISTIC

DISTINCTDISTINCTROWDIV

DOUBLEDROPDUAL

EACHELSEELSEIF

ENCLOSEDESCAPEDEXISTS

EXITEXPLAINFALSE

FETCHFLOATFLOAT4

FLOAT8FORFORCE

FOREIGNFROMFULLTEXT

GOTOGRANTGROUP

HAVINGHIGH_PRIORITYHOUR_MICROSECOND

HOUR_MINUTEHOUR_SECONDIF

IGNOREININDEX

INFILEINNERINOUT

INSENSITIVEINSERTINT

INT1INT2INT3

INT4INT8INTEGER

INTERVALINTOIS

ITERATEJOINKEY

KEYSKILLLABEL

LEADINGLEAVELEFT

LIKELIMITLINEAR

LINESLOADLOCALTIME

LOCALTIMESTAMPLOCKLONG

LONGBLOBLONGTEXTLOOP

LOW_PRIORITYMATCHMEDIUMBLOB

MEDIUMINTMEDIUMTEXTMIDDLEINT

MINUTE_MICROSECONDMINUTE_SECONDMOD

MODIFIESNATURALNOT

NO_WRITE_TO_BINLOGNULLNUMERIC

ONOPTIMIZEOPTION

OPTIONALLYORORDER

OUTOUTEROUTFILE

PRECISIONPRIMARYPROCEDURE

PURGERAID0RANGE

READREADSREAL

REFERENCESREGEXPRELEASE

RENAMEREPEATREPLACE

REQUIRERESTRICTRETURN

REVOKERIGHTRLIKE

SCHEMASCHEMASSECOND_MICROSECOND

SELECTSENSITIVESEPARATOR

SETSHOWSMALLINT

SPATIALSPECIFICSQL

SQLEXCEPTIONSQLSTATESQLWARNING

SQL_BIG_RESULTSQL_CALC_FOUND_ROWSSQL_SMALL_RESULT

SSLSTARTINGSTRAIGHT_JOIN

TABLETERMINATEDTHEN

TINYBLOBTINYINTTINYTEXT

TOTRAILINGTRIGGER

TRUEUNDOUNION

UNIQUEUNLOCKUNSIGNED

UPDATEUSAGEUSE

USINGUTC_DATEUTC_TIME

UTC_TIMESTAMPVALUESVARBINARY

VARCHARVARCHARACTERVARYING

WHENWHEREWHILE

WITHWRITEX509

XORYEAR_MONTHZEROFILL

MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。下面列出了一些例子:

ACTION

BIT

DATE

ENUM

NO

TEXT

TIME

TIMESTAMP


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8566109.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存