在参数中使用撇号调用存储过程不起作用

时间:2011-04-21 02:20:44

标签: sql sql-server tsql

我在C#中有一个应用程序,其部分工作是将Excel文件中的所有数据插入数据库。

从Excel获取数据的工作没问题,我使用存储过程将数据插入到数据库的表中。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[sp_Insert]

@id int,
@brand nvarchar(50),
@model nvarchar(50),
@prodNumber nvarchar(50),
@category nvarchar(50),
@local nvarchar(50)

AS
INSERT INTO Tbl_Registos (ID, Brand, Model, [Product Number], Category, Local)
VALUES (@id, @brand, @model, @prodNumber, @category, @local)

这是SP完美运作的一个例子:

sp_Insert N'1', N'Brand example', N'ABC123', N'123456-7890', 
          N'Laptop', N'18'

当我遇到这样的情况时会出现问题:

sp_Insert N'1', N'Brand example', N'ABC123', N'123456-7890',
          N'Laptop', N'Director's floor'

当我在论证中间有'时。我想使用引号[],但在我有整数的情况下,我不能把它们放在引号之间。

从Excel中获取一行后,我使用循环将参数放在作为查询的字符串中。

1 个答案:

答案 0 :(得分:2)

你可以在你的输入中通过放置另一个来逃避它,插入将起作用。您可以执行此操作或解析此类字符的数据并忽略它们。因此,使用此转义的插入语句将是:

sp_Insert N'1', N'Brand example', N'ABC123', N'123456-7890', N'Laptop', N'Director''s floor'