热情软件屋

 

存储过程能否用变量表示表名和字段名


编号:QA001924
建立日期: 1999年10月28日 最后修改日期:2003年8月2日
所属类别:

Outstand:
    如何往SQL SERVER 7。0存储过程传递表和条件参数?且表和条件参数如何定义?
    在SQL SERVER 7。0存储过程我要实现:
    如有参数:@a,@b,@c,@d,@e,@f
     SQL=' select @a from @b right join @c on @b.@e=@c.@e where @f'
    在VB中,@a应为字符型, @b,@c应为表。@e为字段,@f 为条件。谢谢你们的指教

回答:

    于溪玥的意见:
    虽然Store Procedure 快,但表、字段等数据库对象名不能作为存储过程的参数:
     @parameter
     ...they cannot be used in place of table names, column names, or the names of other database
     objects...
    引自《Transact-SQL HELP》之"CREATE PROCEDURE"索引。最好用VB程序凑动态 SQL!适用于大多数数据库。
    
    youpengqing的意见:
    declare @sql varchar(2000)
    select @sql='..' + @a + 'from' + @b
    execute(@sql)
    在生成字符串时,要处理一下。
    
    reform_li的意见:
    在存储过程中,不支持用变量表示表名和字段名!
    
    乐全云的意见:
    DECLARE @SQL NVARCHAR(4000)
    SET @SQL=N' select '+@a+' from '+"'"+@b+"'"+' right join '+"'"+@c+"'"+' on '+"'"+@b+"'"+'.'+@e+'='+"'"+@c+"'"+'.'+@e+' where @f'
    EXEC sp_executesql @SQL

此问题由reform_li等回答。

附加关键字:编程, 源程序, programming, source code, 其他语言, asm, vba, vbscript, 数据库, database, query

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio