表结构:
SET ANSI_NULLS ON
GOSET QUOTED_IDENTIFIER ON
GOCREATE TABLE [dbo].[aboutZR](
[companyIntroduction] [text] NULL,
[missions] [text] NULL,
[domain] [text] NULL,
[organizationalStructure] [text] NULL,
[interviewee] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'公司简介' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'aboutZR', @level2type=N'COLUMN',@level2name=N'companyIntroduction'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'使命与价值观' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'aboutZR', @level2type=N'COLUMN',@level2name=N'missions'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'业务领域' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'aboutZR', @level2type=N'COLUMN',@level2name=N'domain'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'组织结构' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'aboutZR', @level2type=N'COLUMN',@level2name=N'organizationalStructure'
GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'诚聘英才' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'aboutZR', @level2type=N'COLUMN',@level2name=N'interviewee'
GO-- =============================================================
-- Author: dai
-- Create date: 2010-4-8
-- Description: 修改关于中润信息,当不存在时进行插入操作
-- =============================================================ALTER proc [dbo].[UP_aboutZRU]
@columnName nvarchar(40),--列名称
@columnContent nvarchar(max) --列内容
as
declare @sql nvarchar(500)
declare @ParmDefinition nvarchar(500)
declare @count1 int --获得行数判断是进行修改还是插入操作set @sql=N'select @count=count(*)
from aboutZR
where ['+@columnName+'] is not null
'
SET @ParmDefinition = N'@count int output'
exec sp_executesql @sql,@ParmDefinition,@count=@count1 outputif @count1>0
begin
set @sql=N'update [aboutZR]
set ['+@columnName+N']='+@columnContent
end
else
begin
set @sql=N'INSERT INTO [aboutZR]
   (['+@columnName+N'])
 VALUES
   ('+@columnContent+N')'
end
print @sql
exec sp_executesql @sql不知道怎么解决。请各位大虾帮忙一下

解决方案 »

  1.   


    alter proc [dbo].[UP_aboutZRU]
    @columnName nvarchar(40),--列名称
    @columnContent nvarchar(max) --列内容
    as
    begin
    declare @sql nvarchar(500)
    declare @ParmDefinition nvarchar(500)
    declare @count1 int --获得行数判断是进行修改还是插入操作 set @sql=N'select @count=count(*)
               from aboutZR
               where ['+@columnName+'] is not null'
    SET @ParmDefinition = N'@count int output'
    exec sp_executesql @sql,@ParmDefinition,@count=@count1 output
        print @count1
    if @count1>0
    begin
    set @sql=N'update [aboutZR] set ['+@columnName+N']='''+@columnContent + ''''
    end
    else
    begin
    set @sql=N'INSERT INTO [aboutZR] (['+@columnName+N']) VALUES ('''+@columnContent+N''''
        end print @sql
    exec sp_executesql @sql
    end
      

  2.   

    print @sql我已经做过 就是不知道怎么解决。
      

  3.   

    exec UP_aboutZRU 'domain','dddddddd' exec UP_aboutZRU '列名称','列值' 提示 服务器: 消息 128,级别 15,状态 1,行 4
    在此上下文中不允许使用 'dddddddd'。此处只允许使用常量、表达式或变量。不允许使用列名。那个SQL语句是INSERT INTO [aboutZR]
    ([domain])
    VALUES
    (dddddddd)
      

  4.   


    你可以运行一下 你上面改的那个。我之前也是想的这个方法。不行,所以我就不太清楚怎么用sql语句实现了不行的话,用C#程序实现是很简单的,就是想找到sql解决的方案
      

  5.   

    ([domain])
    VALUES
    ('dddddddd')
      

  6.   

    exec UP_aboutZRU 'domain','''dddddddd'''  这样呢?
      

  7.   

    ALTER proc [dbo].[UP_aboutZRU]
    @columnName nvarchar(40),--列名称
    @columnContent nvarchar(max) --列内容
    as
    declare @sql nvarchar(500)
    declare @ParmDefinition nvarchar(500)
    declare @count1 int --获得行数判断是进行修改还是插入操作

    set @columnContent=quotename(@columnContent,char(39))--此处加上这句,赋值还是按你原来那样试试
    set @sql=N'select @count=count(*)
    from aboutZR
    where ['+@columnName+'] is not null
    '
    SET @ParmDefinition = N'@count int output'
    exec sp_executesql @sql,@ParmDefinition,@count=@count1 outputif @count1>0
    begin
    set @sql=N'update [aboutZR]
    set ['+@columnName+N']='+@columnContent
    end
    else
    begin
    set @sql=N'INSERT INTO [aboutZR]
    (['+@columnName+N'])
    VALUES
    ('+@columnContent+N')'
    end
    print @sql
    exec sp_executesql @sql
      

  8.   


    呵呵 你马虎了 。 嗨 我就更马虎了  你那个差一个)而我自己的那个差一个‘呵呵 谢谢大家了最后的结果是:alter proc [dbo].[UP_aboutZRU]
    @columnName nvarchar(40),--列名称
    @columnContent nvarchar(4000) --列内容
    as
    begin
        declare @sql nvarchar(500)
        declare @ParmDefinition nvarchar(500)
        declare @count1 int --获得行数判断是进行修改还是插入操作    set @sql=N'select @count=count(*)
                   from aboutZR
                   where ['+@columnName+'] is not null'
        SET @ParmDefinition = N'@count int output'
        exec sp_executesql @sql,@ParmDefinition,@count=@count1 output
        print @count1
        if @count1>0
        begin
            set @sql=N'update [aboutZR] set ['+@columnName+N']='''+@columnContent + ''''
        end
        else
        begin
            set @sql=N'INSERT INTO [aboutZR] (['+@columnName+N']) VALUES ('''+@columnContent+N''')'
        end    print @sql
        exec sp_executesql @sql
    end