Sql server 声明变量时编写SQL语句

Sql server 声明变量时编写SQL语句,sql-server,vb.net,Sql Server,Vb.net,我正在尝试在VB应用程序中编写SQL语句。在本例中,我需要声明两个变量来调用其他存储过程。当我在SSMS中运行它时,这段代码可以运行,但我不知道如何在VB中运行它 声明: DECLARE @NewIncidentNoteId NVARCHAR(15) EXEC uspGetNextId @NewIncidentNoteId OUTPUT INSERT INTO [dbo].[IncidentNotes] ([Id] ,[IncidentId]

我正在尝试在VB应用程序中编写SQL语句。在本例中,我需要声明两个变量来调用其他存储过程。当我在SSMS中运行它时,这段代码可以运行,但我不知道如何在VB中运行它

声明:

DECLARE @NewIncidentNoteId NVARCHAR(15)
EXEC uspGetNextId @NewIncidentNoteId OUTPUT

INSERT INTO [dbo].[IncidentNotes]
           ([Id]
           ,[IncidentId]
           ,[TaskId]
           ,[VLevel]
           ,[NotesSourceType]
           ,[Notes]
           ,[LogDate]
           ,[LogTime]
           ,[LogTZ]
           ,[LogBy]
           ,[LogByName]
           ,[NotifyFlg]
           ,[ActivityDate]
           ,[ActivityTime]
           ,[ShowInReport])
        VALUES()
           (@NewIncidentNoteId
           ,'60Z3M'
           ,''
           ,'1'
           ,'EIRInvestigatorComment'
           ,'This is a TEST note.'
           ,'20150416'
           ,'10:10:10'
           ,'UTC'
           ,'12876'
           ,'USER, ADMIN'
           ,'False'
           ,'20150416'
           ,'12:13:13'
           ,'1'))

首先,正如其他人所说,最好的选择是将其作为存储过程添加到数据库中。然后,您可以通过一个简单的ADO.NET命令执行存储过程。但是,如果坚持将整个SQL脚本作为命令发送,有几种方法可以将其作为字符串发送

VB目前对多行字符串文本没有很好的支持,早就应该支持的多行字符串文本将作为Visual Studio 2015的一部分添加进来。有几个变通办法。请参阅以获得一些好的选项。但是,对于类似的情况,您可能需要研究从嵌入式资源或外部脚本文件读取脚本

Set cmd = New ADODB.Command
 cmd.ActiveConnection = con
 cmd.CommandType = adCmdStoredProc
 cmd.CommandText = "empdetails"

 cmd.Parameters.Append cmd.CreateParameter_
    ("empid", adVarChar, adParamInput, 6, str_empid)

 Set rs = cmd.Execute

 If Not rs.EOF Then
  txt_firstname = rs.Fields(0)
  txt_title = rs.Fields(1)
  txt_address = rs.Fields(2)
 End If
Set cmd.ActiveConnection=Nothing

这段代码显示了如何在vb6中使用SP不确定使用哪一个vb如果它是vb.net,那么可以使用ADO.net来实现

这个链接可能也有帮助

我很困惑。你有什么问题?你想让VB代码做什么?如何在VB中将其写入字符串。你只想知道如何在VB中将整个SQL脚本声明为文字字符串?第一个问题,当你可以从VB调用SP时,为什么要将其写入字符串?这根本没有意义。你将会有更多的问题在这样做,并且更容易SQL注入…将其转化为一个过程,并从VB中调用它。OP在标记中指定了VB.NET,以记录引发如此多讨论的问题是如何被否决的