【发布时间】:2013-01-30 06:25:02
【问题描述】:
我已经写了这个存储过程:
CREATE PROCEDURE [dbo].[spGetCuisines]
@RestaurantID INT ,
@CuisineID NVARCHAR(200)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT CuisineID, CuisineName
FROM dbo.Cuisine1
WHERE CuisineID IN (
SELECT dbo.Dishes1.CuisineID
FROM dbo.Dishes1
WHERE DishID IN ( SELECT DishID
FROM dbo.RestaurantDish
WHERE RestaurantID = '
+ CAST(@RestaurantID AS NVARCHAR(MAX)) + ' ) )'
IF @CuisineID <> ''
BEGIN
SET @sql += 'AND Cuisine1.CuisineID IN('
+ CAST(@CuisineID AS NVARCHAR(MAX)) +')'
END
EXECUTE sp_executesql @sql;
END
我正在使用 3 个表格,其列如下:
菜肴1
DishID
DishName
CuisineID
Price
美食1
CuisineID
CuisineName
Type
DateCreated
DateModified
DateDeleted
餐厅菜
RestaurantDishID
RestaurantID
DishID
但是我的存储过程在这一行给出了语法错误:
SET @sql += 'AND Cuisine1.CuisineID IN('+ CAST(@CuisineID AS NVARCHAR(MAX)) +')'
上面写着:
“+”附近的语法不正确
有人可以指导我吗? SQL Server版本和这个有关系吗?
【问题讨论】:
-
那么,您使用的是哪个版本的 SQL Server?
-
另外,你听说过joins吗?
-
是的。我知道加入。怎么处理他们?
-
你还需要做演员吗?它已经是 NVARCHAR 了?此外,您的主键不应是最大长度的字符串。
标签: sql sql-server-2005 stored-procedures