我想实现的就是写这个存储过程,执行的时候,有不为空的参数传入才去更新他对应的子段,如果传入为空值,就不去更新了,保留原值。其他类型的都好办,就Image类型的实在不会,我在这个字段中存的是文件!
CREATE PROCEDURE UpdateSP
-- Add the parameters for the stored procedure here
@myName NVARCHAR(50),
@image IMAGE,
@phone NVARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SET @sql = '';
IF @image is not NULL
BEGIN
SET @sql = ' set IMAGE = ' + @image -- 这个地方就不会了,怎么写都是错
END IF @phone IS NOT NULL
BEGIN
IF @sql <> ''
SET @sql = @sql + ' , '
SET @sql = @sql + ' SET Phone = ''' + @phone + ''''
END if @sql <> ''
BEGIN
SET @sql = 'UPDATE MyTbl ' + @sql + ' WHERE MyName = ''' + @myName + ''''
EXEC(@sql)
END
ELSE
BEGIN
PRINT 'EMPTY'
END
END
CREATE PROCEDURE UpdateSP
-- Add the parameters for the stored procedure here
@myName NVARCHAR(50),
@image IMAGE,
@phone NVARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SET @sql = '';
IF @image is not NULL
BEGIN
SET @sql = ' set IMAGE = ' + @image -- 这个地方就不会了,怎么写都是错
END IF @phone IS NOT NULL
BEGIN
IF @sql <> ''
SET @sql = @sql + ' , '
SET @sql = @sql + ' SET Phone = ''' + @phone + ''''
END if @sql <> ''
BEGIN
SET @sql = 'UPDATE MyTbl ' + @sql + ' WHERE MyName = ''' + @myName + ''''
EXEC(@sql)
END
ELSE
BEGIN
PRINT 'EMPTY'
END
END
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用大值数据类型和 UPDATE 语句的 .WRITE 子句。
UPDATE MyTbl set IMAGE = '...',set Phone = '...' where...
这里就错了IF @phone IS NOT NULL
BEGIN
IF @sql <> ''
SET @sql = @sql + ' , '
SET @sql = @sql + ' SET Phone = ''' + @phone + ''''
END第2个 SET @sql = @sql + ' SET Phone = ''' + @phone + ''''IF @phone IS NOT NULL
BEGIN
IF @sql <> ''
begin
SET @sql = @sql + ' , '
SET @sql = @sql + 'Phone = ''' + @phone + ''''
end
else
begin
SET @sql = @sql + 'set Phone = ''' + @phone + ''''
end
END你那样写 会报 set错误
http://community.csdn.net/Expert/TopicView3.asp?id=5637094 这个帖子里讲的很清楚了,但还是建议LZ多看看帮助