CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

这是不是有点异想天开了。

楼主orjava()2004-08-02 17:56:34 在 MS-SQL Server / 应用实例 提问

存储过程定义如下:  
  CREATE   PROCEDURE   oneProc  
  (  
  @var1 int,  
  @var2 int,  
                    @Express       nvarcahr(150)  
  )  
    AS  
  DECLARE         @var3   int  
  Exec   (@Express)                 /*   有办法把变量直接传入到表达式吗?   */  
  Print   @var3  
   
  上述存储过程在用以下语句执行时出现如下错误,  
  Exec   oneProc   12,13,'SELECT   @var3=@var1+@var2)  
   
  Must   declare   the   variable   '@var3'.  
   
  而我想要的结果是:@var3=25,并切输出.  
  但是在执行时总出现变量没有定义的错误,  
   
   
  请问我该如何解决,先谢谢各位了。  
   
    --------------- 问题点数:50、回复次数:6Top

1 楼pbsql(风云)回复于 2004-08-02 18:01:20 得分 15

可以,举个例子:  
  declare   @tb   varchar(50),@cnt   int,@sql   nvarchar(4000)  
  set   @cnt=0  
  set   @sql='select   @cnt=@cnt+count(*)   from   '+@tb  
  exec   sp_executesql   @sql,N'@cnt   int   output',@cnt   output  
  Top

2 楼zjcxc(邹建)回复于 2004-08-02 21:12:47 得分 15

CREATE   PROCEDURE   oneProc  
  (  
  @var1 int,  
  @var2 int,  
          @Express       nvarcahr(150)  
  )  
  AS  
   
  DECLARE         @var3   int  
   
  declare   @s   nvarchar(4000)  
  set   @s='select   @var3=('+@Express+')'  
  Exec   sp_executesql   @s,N'@var3   int   out',@var3   out  
  Print   @var3  
  goTop

3 楼cqdj(快乐的游民)回复于 2004-08-03 08:10:32 得分 5

当然可以,只要你传入的字符串是符合语法的。Top

4 楼CSDMN(冒牌经理 V0.4)回复于 2004-08-03 08:42:48 得分 10

直接:  
   
  declare   @sql   Nchar(4000)  
  set   @sql=N'SELECT   @var3=@var1+@var2'  
  declare   @var3   int  
  exec   sp_executesql   @sql,N'@var1   int,@var2   int,@var3   int   output',@var1=12,@var2=13,@var3=@var3   out  
  print   @var3  
   
  Top

5 楼MyNoName(阿呆)回复于 2004-08-03 11:21:36 得分 5

当然可以.Top

6 楼orjava()回复于 2004-08-03 16:27:59 得分 0

先谢谢各位大哥的帮忙。正确的格式如下:  
  CREATE   PROCEDURE   oneProc  
  (  
  @var1 int,  
  @var2 int,  
          @Express       nvarcahr(150)  
  )  
  AS  
   
  DECLARE         @var3   int  
   
  declare   @s   nvarchar(4000)  
  set   @s='select   @var3=('+@Express+')'  
  Exec   sp_executesql   @s,N'·@var1,@var2,@var3   int   out',@var1,@var2,@var3   out  
  Print   @var3  
  go  
   
                                                                              ·再次谢谢各位!·Top

相关问题

  • 求一个这样语句。(不知道是不是异想天开?)
  • 我是不是异想天开呀?
  • 这个问题是能够实现,还是我异想天开?
  • windows字体的异想天开!菜鸟请不要进入。
  • 问一个javascript的问题,看看是不是异想天开
  • 这想法是异想天开么?如能实现请给个实现方案.分数不是问题,很急喔!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 我想一个人开发一个ERP系统,是不是太异想天开、太自不量力了?
  • 异想天开的问题
  • 异想天开的问题
  • 一个异想天开的问题

关键词

  • sql
  • asdeclare
  • nvarcahr
  • outprint
  • cnt
  • executesql
  • var
  • 谢谢各位
  • 如下
  • express

得分解答快速导航

  • 帖主:orjava
  • pbsql
  • zjcxc
  • cqdj
  • CSDMN
  • MyNoName

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo