DECLARE 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)
用select...into语句。这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。
重要:
SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:
CREATE PROCEDURE sp1 (x VARCHAR(5)) BEGINDECLARE xname VARCHAR(5) DEFAULT 'bob' DECLARE newname VARCHAR(5) DECLARE xid INTSELECT xname,id INTO newname,xid FROM table1 WHERE xname = xname SELECT newname END
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。
mysql不是这样用的sql="select tlr_no,commid from ol_transdetail where tran_date='0605' and tran_time='171721' and seqno='000137'"
mysql_query( conn, sql )
定义一个数据集 MYSQL_RES *res
res=mysql_store_result( conn )
再定义一个行数据变量 MYSQL_ROW row
row=mysql_fetch_row( res )
row[0]is tlr_no
row[1]is commid
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)