急!求救,存储过程出错!

hwrong200 2003-10-13 04:39:13
建一表如下:
CREATE TABLE [dbo].[Ztest] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[price] [numeric](9, 2) NULL ,
[cost] [numeric](9, 2) NULL
) ON [PRIMARY]
GO
建一存储过程如下:
CREATE PROCEDURE SP_Ztest_ADD
@price nvarchar(50),
@cost nvarchar(50)

AS
insert into Ztest(price,cost) values(@price,@cost)
GO
VB高调用存储过程程序如下:
Dim cmd As New ADODB.Command
cmd.ActiveConnection = G_Con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "SP_Ztest_ADD"
cmd.Parameters.Append cmd.CreateParameter("@price", adNumeric, adParamInput, 5, Trim(Text1.Text))
cmd.Parameters.Append cmd.CreateParameter("@cost", adNumeric, adParamInput, 5, Trim(Text2.Text))
运行出错:The Precision is invalid,
请问各位大侠,如何解决???

...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-10-13
  • 打赏
  • 举报
回复
由系统自动生成参数,不要手工创建.
zjcxc 2003-10-13
  • 打赏
  • 举报
回复
'改为下面的调用方法

'VB高调用存储过程程序如下:
Dim cmd As New ADODB.Command
cmd.ActiveConnection = G_Con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "SP_Ztest_ADD"
cmd.Parameters.Refresh
cmd.Parameters("@price")=Trim(Text1.Text)
cmd.Parameters("@cost")=Trim(Text2.Text)
liaorui 2003-10-13
  • 打赏
  • 举报
回复
请教一下,在VB里有adDecimal和adNumeric这两种数据类型吗???
hwrong200 2003-10-13
  • 打赏
  • 举报
回复
不好意思,存储过程贴错了,应为以下:
CREATE PROCEDURE SP_Ztest_ADD
@price numeric(9,2),
@cost numeric(9,2)

AS
insert into Ztest(price,cost) values(@price,@cost)
GO
经本人测试,发现一个有趣的问题,若将VB中传给存储过程的参数类型改为adDouble或adInteger,时不会出错,但改为adDecimal或adNumeric 就会出现如上所述错误,请高手指教!!!
liaorui 2003-10-13
  • 打赏
  • 举报
回复
存储过程里的参数和表的类型不匹配
txlicenhe 2003-10-13
  • 打赏
  • 举报
回复
CREATE PROCEDURE SP_Ztest_ADD
@price numeric(9,2),
@cost numeric(9,2)

AS
insert into Ztest(price,cost) values(@price,@cost)
GO

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧