USE [Steel_DefecData]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[ODQ_Operate_t]
@strDefectRoiTableName varchar(30)
@strSteelNo varchar(30),
@iSurfaceType tinyint,
@iRoiNo smallint
as --在名为strDefectRoiTableName的表中删除符合条件的记录
begin
set nocount on
declare @sql nvarchar(300)
set @sql = N'delete '+@strDefectRoiTableName+'
where strSteelNo = '+@strSteelNo+'
and iSurfaceType = '+@strSurfaceType+'
and iRoiNo = '+@strRoiNo+''
exec sp_executesql?@sql
end
创建存储过程 在执行exec sp_executesql?@sql 语句时提示有语法错误 本人菜鸟 找了好久不知道错误在哪 请高人指教
------解决方案--------------------
CREATE procedure [dbo].[ODQ_Operate_t]
@strDefectRoiTableName varchar(30),--少了个逗号
@strSteelNo varchar(30),
@iSurfaceType tinyint,
@iRoiNo smallint
as --在名为strDefectRoiTableName的表中删除符合条件的记录
begin
set nocount on
declare @sql nvarchar(300)
set @sql = N'delete '+@strDefectRoiTableName+'
where strSteelNo = '+@strSteelNo+'
and iSurfaceType = '+@strSurfaceType+'--定义与参数名不一致
and iRoiNo = '+@strRoiNo+''--定义与参数名不一致
exec sp_executesql @sql
end
------解决方案--------------------
CREATE PROCEDURE [dbo].[ODQ_Operate_t]
@strDefectRoiTableName VARCHAR(30) ,
@strSteelNo VARCHAR(30) ,
@iSurfaceType TINYINT ,
@iRoiNo SMALLINT
AS --在名为strDefectRoiTableName的表中删除符合条件的记录
BEGIN
SET nocount ON
DECLARE @sql NVARCHAR(300)
SET @sql = N'delete ' + @strDefectRoiTableName + '
where strSteelNo = ''' + @strSteelNo + '''
and iSurfaceType = ' + @iSurfaceType + '
and iRoiNo = ' + @iRoiNo + ''
EXEC ( @sql )
END
------解决方案--------------------
最后的 exec sp_executesql @sql 修改为 exec(@sql) 试试行不行
------解决方案--------------------
exec sp_executesql @sql 去掉sp_executesql