2016-06-20 2 views
1

Я зациклился на том, как добавить выходное значение хранимой процедуры SQL Server с другим значением параметра в моем VB-коде. У меня есть эта хранимая процедура, которая имеет две колонки: один столбец - это значения суффикса, а другой - тип документа.Значение параметра хранимой процедуры SQL Server, добавленное к значению vb.net

Я присоединился к нему на другой стол, где столбцы являются: тип документа , имя документа и documentid. Я использую эту процедуру для добавления суффикса к именам входящих документов, которые каждый день вставляются в эту вторую таблицу на основе типа документа, а документы с прикрепленным суффиксом затем добавляются в третью таблицу (эта часть не нужна для этого вопроса)

SQL Server хранимые процедуры:

ALTER PROCEDURE [dbo].[up_AddDocumentSuffix] 
    (@Docsuffix varchar(50) OUTPUT, 
    @DocName varchar(50)) 
AS 
    SELECT @Docsuffix = t2.DocSuffix 
    FROM Documents_DocumentDetails t1 
    INNER JOIN Documents_DocumentTypes t2 ON t2.DocumentType = t1.DocumentType WHERE (t2.Docname = @DocName) 

в VB у меня есть этот код (код 1) Я пытаюсь добавить, что придает суффикс из этой хранимой процедуры с параметром DocumentName, но я я не уверен, что я даже пойду в правильном направлении. Процедура, которая добавляет имя документа, упоминается где-то еще в коде (код 2). Я не уверен, как включить первый код и добавить суффикс во второй, любые идеи?

Edit: забыл добавить модифицированную процедуру SQL хранится настоящее время я использую мои извинения, параметр ввода @DocName

Vb код 1:

Dim DocName As String 
DocName = drDocDetailData("DocName").ToString   

Using DocDetail As New SqlCommand 
    With DocDetail 
      .Connection = con 
      .CommandType = CommandType.StoredProcedure 
      .CommandText = ("up_AddDocumentSuffix") 
      Suffix = CType(.ExecuteScalar, varchar) 
    End With 
End Using 

Vb код 2:

.Parameters.AddWithValue("@DocName", Trim(drDocDetailData("DocName").ToString)) 

благодаря @Morpheus вот правильный код!

Using DocDetail As New SqlCommand 
With DocDetail 
    .Connection = con 
    .CommandType = CommandType.StoredProcedure 
    .CommandText = ("up_AddDocumentSuffix") 
    .Parameters.AddWithValue("@DocName", con) 
    .Parameters.Add("@DocSuffix", SqlDbType.VarChar, 50).Direction = ParameterDirection.Output 
    .ExecuteNonQuery() 
    suffix = DocDetail.Parameters("@DocSuffix").Value 
    Docname = sb.Append(DocName).Append(suffix).ToString() 
End With 
End Using 
+0

@marc_s спасибо за фиксации его! извините за все ошибки – jean55

+1

, пожалуйста, дайте мне знать, если вам понадобится более подробная информация в моем ответе или если это поможет вам решить проблему. – Morpheus

+0

@Morpheus просто ответил на ваш комментарий! – jean55

ответ

1

Вам нужно использовать Output параметр на вашем SqlCommand объекта, чтобы получить значение для @Docsuffix и вы не хотите использовать ExecuteScalar в этом сценарии.

Смотрите этот ответ для примера: https://stackoverflow.com/a/31533252/3854195

Ключ ParameterDirection.Output

+0

извините за поздний ответ! Большое вам спасибо, что вы правы, я заменил execcescalar на ExecuteNonQuery() и изменил направление вывода, я только что закончил тестирование, и он сработал! Спасибо! Я попробовал вставить модифицированный код, но он не даст мне в этом комментарии любую идею, как это сделать? но еще раз спасибо! – jean55

+0

Замечательно! Я думаю, вам придется добавить модифицированный код в качестве обновления к исходному вопросу. – Morpheus