存储过程能否用变量表示表名和字段名
编号:QA001924
建立日期: 1999年10月28日 最后修改日期:2003年8月2日
所属类别:
Q
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 为条件。谢谢你们的指教
A回答:
于溪玥的意见:
虽然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。
| |
|
|
| |
|
|