动态sql

动态SQL语句

2009-12-17 10:34

3. 输入或输出参数

--(1)输入参数:
          declare @QueryString nvarchar(1000) --动态查询语句变量(注:必

须为ntext或nchar哐nvarchar类型,不能是varchar类型)
          declare @paramstring nvarchar(200) --设置动态语句中的参数的字

符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)
          declare @input_id int--定义需传入动态语句的参数的值
          set @QueryString='select * from tablename where id=@id' --

id为字段名,@id为要传入的参数
          set @paramstring='@id int' --设置动态语句中参数的定义的字符串
          set @input_id =1 --设置需传入动态语句的参数的值为1
          exec sp_executesql @querystring,@paramstring,@id=@input_id

          --若有多个参数:
          declare @QueryString nvarchar(1000) --动态查询语句变量(注:必

须为ntext或nchar哐nvarchar类型,不能是varchar类型)
          declare @paramstring nvarchar(200) --设置动态语句中的参数的字

符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)
          declare @input_id int--定义需传入动态语句的参数的值,参数1
          declare @input_name varchar(20)--定义需传入动态语句的参数的值

,参数2

          set @QueryString='select * from tablename where id=@id and

name=@name'   --id与name为字段名,@id与@name为要传入的参数
          set @paramstring='@id int,@name varchar(20)' --设置动态语句中

参数的定义的字符串,多个参数用","隔开
          set @input_id =1 --设置需传入动态语句的参数的值为1
          set @input_name='张三'   --设置需传入动态语句的参数的值为"张

三"
          exec sp_executesql

@querystring,@paramstring,@id=@input_id,@name=@input_name --请注意参数

的顺序
     --(2)输出参数
             declare @num int, @sqls nvarchar(4000)
            set @sqls='select count(*) from tableName'
            exec(@sqls)
        --如何将exec执行结果放入变量中?         
        declare @QueryString nvarchar(1000) --动态查询语名变量(注:必须

为ntext或nchar哐nvarchar类型,不能是varchar类型)
        declare @paramstring nvarchar(200) --设置动态语句中的参数的字符

串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)
        declare @output_result int--查询结果赋给@output_result

        set @QueryString='select @totalcount=count(*) from tablename'

--@totalcount 为输出结果参数
        set @paramstring='@totalcount int output' --设置动态语句中参数

的定义的字符串,多个参数用","隔开
        exec sp_executesql

@querystring,@paramstring,@totalcount=@output_result output
        select @output_result
        --当然,输入与输出参数可以一起使用,大家可以自己去试一试。
        --另外,动态语句查询的结果集要输出的话,我只想到以下用临时表的

方法,不知各位有没有更好的方法.
        IF object_id('[tempdb].[dbo].#tmp') IS NOT NULL --判断临时表

#tmp是否存在,存在则删除
            drop table #tmp
        select * into #tmp from tablename where 1=2 --创建临时表#tmp,其

结构与tablename相同
        declare @QueryString nvarchar(1000) --动态查询语名变量(注:必须

为ntext或nchar哐nvarchar类型,不能是varchar类型)
        set @QueryString='select * from tablename '
        insert into #tmp(field1,field2, ) exec(@querystirng)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值