0 0

请教SQL Server 2000下动态SQL中的赋值问题3

目前在写一个存储过程,希望能动态传入数据表名@seedTable然后操作对应数据表:
create procedure deleteSeed(@seedTable varchar(255),@url varchar(255))

as
declare @deleteSql varchar(255);
declare @updateSql varchar(255);
declare @selectSql varchar(255);
declare @length int;

begin
	set @deleteSql = 'delete from ' + @seedTable + ' where url=''' + @url + ''';';
	set @updateSql = 'update ' + @seedTable + ' set length=length-1 where url=''' + @url + ''';';
	set @selectSql = 'select ' + @length + '=length from ' + @seedTable + ' where url=''' + @url + ''';';
	exec(@selectSql);

	if @length=1 begin
		exec(@deleteSql);
	end
	else begin
		exec(@updateSql);
	end
end;


现在的问题是,过程体的第三句:
set @selectSql = 'select ' + @length + '=length from ' + @seedTable + ' where url=''' + @url + ''';';
出现了问题并提示“将 varchar 值 'select ' 转换为数据类型为 int 的列时发生语法错误。”
我希望这句动态SQL执行后将字段length的值传给@length变量,然后以@length作条件判断。

请问这段代码该如何修改呢?谢谢。
2011年1月02日 20:15

3个答案 按时间排序 按投票排序

0 0

采纳的答案

童鞋,你可以赋值的时候通过 字符链接,可是你想从中out出数据,用exec可不行啊,可要用的sp_executeSql 这个命令。我来帮你改下。

create procedure deleteSeed(@seedTable nvarchar(255),@url nvarchar(255))   
  
as  
declare @deleteSql nvarchar(255);   
declare @updateSql nvarchar(255);   
declare @selectSql nvarchar(255);   
declare @length int;   
  
begin  
    set @deleteSql = 'delete from ' + @seedTable + ' where url=''' + @url + ''';';   
    set @updateSql = 'update ' + @seedTable + ' set length=length-1 where url=''' + @url + ''';';   
   //-- set @selectSql = 'select ' + @length + '=length from ' + @seedTable + ' where url=''' + @url + ''';';  
    set @selectSql = N'select @needLength = length from'+@seedTable +N' where url=''' + @url + ''';';
     
    //--exec(@selectSql);   

 exec sp_executeSql @selectSql,N'@needLength int output',@length = needLenght OUTPUT;
  
    if @length=1 begin  
        exec(@deleteSql);   
    end  
    else begin  
        exec(@updateSql);   
    end  
end;  


你试试,主要是execute 和sp_executeSql 你到msdn去查查了解一些不同点。

2011年1月02日 21:54
0 0

引用
set @selectSql = 'select ' + @length + '=length from ' + @seedTable + ' where url=''' + @url + ''';';
exec(@selectSql);

把它改成:
set @selectSql = 'select @length=length from ' + @seedTable + ' where url=''' + @url + ''';';
exec sp_executesql @selectSql,N'@length int output',@length output

然后此@length就有值了,你在拿去判断

2011年1月05日 22:42
0 0

通过exec sp_executesql 动态给变量赋值:
下面给出实例 

declare @s nvarchar(4000), @i int;
                  
set @s='select @i=count(*) from test_exec';
--定义sql语句里参数
exec sp_executesql @s, N'@i int output', @i output;

通过
exec sp_executesql @s,N'@i int output',@i output

就可以将 string 的sql里的值赋值给 @i

2011年1月02日 21:08

相关推荐

    sqlserver 2000 8版本jdbc驱动

    这个特定的版本("sqljdbc4.jar")可能包含了对SQLServer 2000 8.0的支持,解决了描述中提到的兼容性问题。"适配sql server 2000 8 版本.txt"文件很可能包含了一些关于如何使用这个驱动的说明,包括配置步骤、示例...

    将Sql Server 2000中的数据库备份文件还原到sql2005中

    将Sql Server 2000中的数据库备份文件还原到Sql Server 2005中是一个常见的问题。在这个过程中,我们需要了解Sql Server 2000和Sql Server 2005之间的差异,以便正确地还原数据库备份文件。下面是相关的知识点: 1....

    SQLServer2000版本的驱动包

    在IT行业中,数据库管理系统是数据存储和管理的核心工具,而SQL Server 2000作为微软公司推出的一款经典关系型数据库管理系统,对于许多企业和开发者来说,仍然是他们系统架构中的重要组成部分。本文将深入探讨SQL ...

    从SQL Server 2000升级至SQL Server 2008 R2实验手册

    ### 从SQL Server 2000升级至SQL Server 2008 R2的关键知识点 #### 一、系统及浏览器需求 - **操作系统要求**: - Windows XP SP3 及其以上版本 - Windows Vista SP1 及其以上版本 - Windows 7 - Windows 2008 ...

    Sqlserver2000 四合一版本(中文版)

    sqlserver2000个人版 sqlserver2000企业版 sqlserver2000开发版

    SQL Server Native Client 10,以便于SQLserver高版本可以链接SQLserver2000

    压缩包内附带链接服务器创建脚本方式,此SQL Server Native Client 10.0无病毒,有64位和32位可供选择。...安装完SQL Server Native Client 10.0后再创建个链接服务器,可以实现高版本SQLserver远程链接SQLserver2000。

    SQL Server 2000 以及sp3补丁安装使用说明文档

    SQL Server 2000 及其 SP3 补丁安装使用说明文档 本文档包含了五个部分的详细安装说明:安装数据库 SQL Server 2000、安装数据库 SQL Server 2000 SP3 补丁、创建远程访问的用户、附件数据库和分离数据库。 一、...

    sqlserver2000 jdbc驱动包

    jdbc连接sqlserver2000数据库的驱动包;包含msbase jar mssqlserver jar msutil jar 注意事项:下载解压sql包 数据源驱动 rar文件 解压后的驱动包文件应放到固定的文件夹下 以避免再次打开程序运行时 系统能找到驱动...

    SQL Server2000 SP4企业版精简版8M.rar

    SP4是SQL Server 2000的最后一个服务包,它修复了大量的已知问题,提升了系统安全性,确保了与后来的操作系统和应用程序的兼容性。 3. **安装过程**:执行"SQL Server 2000 SP4企业版精简版8M.exe"文件将启动安装...

    SqlServer2000的驱动sqljdbc4-3.0.jar

    Sql Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级应用中广泛使用。在Java编程环境中,与Sql Server 2000进行数据交互时,需要依赖特定的数据库驱动,这就是所谓的JDBC驱动。本文将详细讨论标题...

    SQL Server2000中文版基础教程-源代码

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据管理、数据存储和数据分析中扮演着重要角色。本教程旨在帮助初学者深入理解SQL Server 2000的基础知识,包括安装配置、基本操作、数据库...

    Microsoft SQL Server 2000 DTS 设计器组件 [免费版]

    安装此下载后,SQL Server 2005 用户无需重新安装 SQL Server 2000 工具即可继续对来自 SQL Server 2005 Management Studio 中 Object Explorer 以及 Business Intelligence Development Studio 中 Execute DTS 2000...

    SQl server 2000安装补丁chs_sql2ksp3.exe

    SQL Server 2000是微软推出的一款关系型数据库管理系统,它在许多企业级应用中扮演着重要角色,尤其在Java开发中,JDBC(Java Database Connectivity)是连接SQL Server 2000的主要方式。"chs_sql2ksp3.exe"是一个...

    在SQL SERVER 2000中实行简繁体转换

    在SQL SERVER 2000中进行简繁体转换是一个重要的功能,特别是在处理中文数据时。这个过程涉及到数据库设计和自定义函数的创建,以便在数据库中实现字符集的转换。下面将详细介绍如何在SQL SERVER 2000中执行简繁体...

    SQL Server 2000 审计功能

    SQL Server 2000 审计功能是指在 SQL Server 2000 中对数据库操作的追踪和记录,以便于数据库管理员和开发人员更好地了解数据库的运行情况和性能。该功能可以追踪数据库中的各种操作,包括查询、更新、插入、删除等...

    Microsoft SQL Server 2000 基础系列课程.rar

    2. **安装与配置**:学习如何在Windows环境下安装SQL Server 2000,设置服务,配置服务器实例和数据库。 3. **T-SQL语言**:学习Transact-SQL(T-SQL)的基本语法,包括数据查询、插入、更新和删除操作,以及更复杂...

    SQL Server2000个人版免安装版1

    本版本全部程序来自SQLSERVER2000个人版,运行效果与SQLSERVER2000个人版完全一样,只是省去了安装的麻烦,以及在已安装SQLSERVER机器上难以再安装SQLSERVER的痛苦经历! 本次为BETA版,有何意见请在sql8.zj.com论坛上...

    Java程序通过JDBC连接SQLServer2000数据库全解.doc

    2. **安装SP4补丁**: 安装完成后,还需要安装SQL Server 2000的SP4补丁,即“SQL2000-KB884525-SP4-x86-CHS”。SP4补丁的安装路径通常会在C盘根目录下自动生成一个名为`C:\SQL2KSP4`的文件夹。安装方法同样是双击`C:...

    SQL Server 2000 msde2000企业管理器绿色免安装版

    MSDE(Microsoft SQL Server Desktop Engine),全称为Microsoft SQL Server 2000 Desktop Engine,是SQL Server的一个轻量级版本,主要用于支持小型应用程序和开发环境。这个“SQL Server 2000 msde2000企业管理器...

    迷你sql2000,SqlServer数据库

    迷你SQL2000是微软公司推出的一种关系型数据库管理系统(RDBMS),全称为Microsoft SQL Server 2000。这款产品以其高效、稳定和易用性在IT行业中广泛应用于数据存储和管理。尽管“迷你”版可能指的是精简或简化版,...

Global site tag (gtag.js) - Google Analytics