PDA

View Full Version : ارسال parametr به stored procedure با addwithvalue



b.mahsa
سه شنبه 30 شهریور 1389, 17:16 عصر
سلام .
من برای insert توی database ام از stored procedure استفاده میکنم . و کد زیر



Dim connstring As String = "dsn=test"
Dim oConn As Odbc.OdbcConnection = New Odbc.OdbcConnection(connstring)
Dim com As New Odbc.OdbcCommand("{? = call sp_test1(?,?,?,?)}", oConn)
com.CommandType = CommandType.StoredProcedure
com.Parameters.AddWithValue("@Code", 2)
com.Parameters.AddWithValue("@Name", "2")
com.Parameters.AddWithValue("@Familly", "2")
com.Parameters.AddWithValue("@Pname", "2")
oConn.Open()
com.ExecuteNonQuery()
oConn.Close()

اما Error زیر رو بهم میده



ERROR [HY105] [Microsoft][ODBC SQL Server Driver]Invalid parameter type

کسی میدونه دلیلش چیه؟

این هم کد stored procedure ام هست.


USE [test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

Create Procedure [dbo].[sp_test1]
@Code bigint,
@Name nvarchar(50),
@Familly nvarchar(50),
@Pname nvarchar(50),
As
Begin
Insert Into test1
([code],[Name],[Familly],[Pname])
Values
(@Code,@Name,@Familly,@Pname)

Declare @ReferenceID int
Select @ReferenceID = @@IDENTITY

Return @ReferenceID

End


ممنون میشم راهنماییم کنین.

ashkan209
سه شنبه 30 شهریور 1389, 17:48 عصر
سلام
چرا odbc ?!!!
باید از sql ، sqlConnection ، .... استفاده کنید

b.mahsa
سه شنبه 30 شهریور 1389, 18:34 عصر
ممنون از جوابتون.
ولی پروژه رو با odbc نوشتم.

salehbagheri
سه شنبه 30 شهریور 1389, 18:49 عصر
Dim com As New Odbc.OdbcCommand("{? = call sp_test1(?,?,?,?)}", oConn)


میتونم بپرسم منظورتون از این خط چیه؟ مخصوصاً این: {? = call sp_test1(?,?,?,?)}

شما باید فقط اسم Stored Procedure رو در اون قسمت بنویسید. البته من با Access کار نکردم و از روند کاری اش خبر ندارم، این مورد برای SQL DB جواب میده.

b.mahsa
سه شنبه 30 شهریور 1389, 19:24 عصر
برای ارسال parametr در odbc نمیشه از @ استفاده کرد.
پارامتر ها رو با ؟ پاس میدن.
اون خط هم ترجمه ی همین قضیه است


?=call

به تعداد پارامتر ها هم ؟ میخواد که اینجا 4 تاس پس میشه


("{? = call sp_test1(?,?,?,?)}