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

相关推荐

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

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

    sqlserver2000-jdbc2.0驱动

    在SQL Server 2000的情况下,Microsoft提供了JDBC驱动,使得Java开发者能够轻松地在Java应用中集成SQL Server。`sqljdbc.jar`是微软早期发布的JDBC驱动程序,适用于Java 2 Platform, Standard Edition (J2SE) 5.0及...

    sqlserver 2000 8版本jdbc驱动

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

    SQLServer2000版本的驱动包

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

    SQL server 2000的驱动程序

    ODBC是Windows平台下的一种标准数据库访问接口,SQL Server 2000提供了ODBC驱动程序,名为“SQL Server”驱动。这个驱动程序支持各种编程语言,如C、C++、VB等,通过ODBC API与数据库进行通信。ODBC驱动程序主要...

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

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

    Sqlserver2000 四合一版本(中文版)

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

    从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 jdbc驱动包

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

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

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

    SqlServer2000的驱动sqljdbc4-3.0.jar

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

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

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

    SQL Server 2000 审计功能

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

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

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

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

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

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

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

    迷你sql2000,SqlServer数据库

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

    SQL Server 2000 JDBC驱动的三个Jar包

    在SQL Server 2000的JDBC支持中,我们主要涉及三个JAR文件: 1. msbase.jar:这个文件包含了基础的JDBC驱动实现,提供了对SQL Server 2000数据库的基本连接功能。它实现了JDBC API的核心类,如`java.sql....

    SQLSERVER2000数据库例子

    "SQL2000SampleDb.msi"是压缩包中的唯一文件,这是一个Microsoft Installer(MSI)文件,通常用于安装软件。在这个特定情况下,它很可能是SQL Server 2000示例数据库的安装程序。通过运行这个MSI文件,用户可以将...

    SQL server 2000 四合一版本.zip

    9. **XML支持**:在2000版本中,SQL Server开始支持XML数据类型,使得数据库能够更好地与Web服务和非关系型数据源交互。 10. **开发工具**:SQL Server 2000提供企业管理器、查询分析器、数据导入导出工具等,便于...

Global site tag (gtag.js) - Google Analytics