问题表现,用常用的办法获取到的字符是个方块,方块转布尔类型,根本转不了,值是错误的。普通的整数转换代码如下:
用上面的代码转换atoi转的是个方块,得不到数据库里的值,但是用mysql的客户端workbench正常没问题。
认真分析了取值用到的数组类型情况,用以下代码解决了问题:
上面代码对应的mysql是phpstudy里mysql 5.5.38版本,其它版本是不是这样不太确定。
另外可以用CAST进行数据类型转换,比如:
但这样写sql语句麻烦,不如直接用字段名方便,但改sql语句和改C++取值代码,看个人喜好,都可以解决问题。
整体代码如下:
如果需要这一套开发环境,也可以联系我,VS2010,MFC,mysql连接库,构造连接字符串,连接,执行sql语句,返回结果。
要求精度高就用decimal审题错了...
简单写下区别:
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)
numberic === decimal
float f = 345.98756f//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘 *** 作,数字溢出不会报错,会有精度的损失。
decimal dd=345.545454879.....//可以支持28位,对最后一位四舍五入。
注:当对decimal类型进行 *** 作时,数值会因溢出而报错。
一、变量的定义mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end
块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。
定义一个变量语法如下:
declare
var_name[,...]
type[default
value]看一个变量定义实例
declare
last
date二、mysql存储过程变量赋值
变量的赋值可直接赋值与查询赋值来 *** 作,直接赋值可以用set来 *** 作,可以是常量或表达式如果下
复制代码
代码如下:
set
var_name=
[,var_name
expr]...给上面的last变量赋值方法如下
set
last
=
date_sub(
current_date(),interval
1
month)下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体 *** 作如下
select
col
into
var_name[,...]
table_expr我们来通过查询给v_pay赋值。
create
function
get
_cost(p_custid
int,p_eff
datetime)
return
decimal(5,2)
deterministic
reads
sql
data
begin
declare
v_pay
decimail(5,2)
select
ifnull(
sum(pay.amount),0)
into
vpay
from
payment
where
pay.payd<=p_eff
and
pay.custid=pid
reutrn
v_rent
+
v_over
-
v_pay
end
$$
好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。
以下是其它网友的补充
在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。
定义变量使用DECLARE语句,语法格式如下:
DECLARE
var_name[,...]
type
[DEFAULT
value]
其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT
value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。
定义与使用变量时需要注意以下几点:
◆
DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。
◆
DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。
◆
存储过程中的变量名不区分大小写。
定义后的变量采用SET语句进行赋值,语法格式如下:
SET
var_name
=
expr
[,var_name
=
expr]
...
其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。
例如:
复制代码
代码如下:
begin
declare
no
varchar(20)
declare
title
varchar(30)
set
no='101010',title='存储过程中定义变量与赋值'
end
提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)