2010-07-01 3 views
2

Я пытаюсь создать хранимую процедуру, которая вернула значение varchar, и это значение, которое нужно отобразить в текстовом поле.Сохраненная процедура return varchar

Это код хранимой процедуры:

Create PROCEDURE Status @id_doc int, @Name varchar(50) OUTPUT 
AS 
select @Name =items.name  
from Doc,Items where @id_doc=IDN and doc.IDN=Items.ID 
return @Name 

Это код в vb.net, где мне нужно, чтобы отобразить возвращаемое значение из процедуры в текстовом поле:

Public Sub Current() 
     Dim dtc As New Data.DataTable 
     Dim dr As SqlClient.SqlDataReader 
     Dim da As New SqlClient.SqlDataAdapter 
     Dim cmd As New SqlClient.SqlCommand 
     Dim id_doc As Integer 
     Dim dset As New DataSet 
     Dim recordset As DataRow 
     Dim Name As String 

     Try 
      id_doc = idDocExplorer 
      cmd.Connection = pubCon 
      cmd.CommandType = CommandType.StoredProcedure 
      cmd.CommandText = "Status" 
      cmd.Parameters.Add("@id_doc", id_doc) 
      cmd.Parameters.Add("@Name ", SqlDbType.VarChar) 
      cmd.Parameters("@Name ").Direction = ParameterDirection.Output 
      cmd.ExecuteScalar() 

      Name = cmd.Parameters("@Name ").Value 
      TextBox1.text=Name 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     Finally 
      dtc = Nothing 
      dr = Nothing 
      da = Nothing 
     End Try 
    End Sub 

Когда я пытаюсь выполните этот код. Я получаю это сообщение за исключением:

«String [1]: свойство Size имеет недопустимый размер 0.»

Что я делаю неправильно? Благодаря!

ответ

3

При его создании необходимо указать size параметра @Name.

У вас также есть дополнительное пространство в "@Name " строку - она ​​должна быть "@Name":

cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50) 
2

Попробуйте изменить:

cmd.Parameters.Add("@Name", SqlDbType.VarChar) 

к:

cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50) 

определить размер выходного параметра

0

вы должны попытаться вызвать ExecuteNonQuery не ExecuteScalar