日期:2014-05-17  浏览次数:20564 次

sql存储过程规则
以下两个存储过程都正确的
一:
create  proc test
@table varchar(200)
as
declare @sql varchar(max)
set @sql='select  *  from '+@table
exec(@sql)
二:
if object_id (N'dbo.test', N'procedure') is null
  Begin
    declare @sql varchar(max) 
    set @sql = 'create procedure test @pram varchar(20) as select * from users where ID=@pram '
    execute(@sql) 
  End
现在想合并一、二:
if object_id (N'dbo.test', N'procedure') is null
  Begin
    declare @sql varchar(max),@table varchar(200)
    set @sql = 'create procedure test @pram varchar(20) as select * from '+@table+' where ID=@pram '
    execute(@sql) 
  End
执行通过,但是没有创建存储过程  应该怎么改
SQL 存储

------解决方案--------------------
create  proc p_test
@table varchar(200)
as
if object_id (N'dbo.test', N'procedure') is null
Begin
    declare @sql varchar(1000) 
    set @sql = 'create procedure test @pram varchar(20) as select * from  '+@table+' where ID=@pram '
    execute(@sql) 
END

------解决方案--------------------
引用:
引用错了  麻烦帮我看下我在三楼发的  看看能不能改改 不用删除的


alter proc test
@table varchar(200)
as
declare @sql varchar(max)
set @sql='select  *  from '+@table
exec(@sql)

------解决方案--------------------
add('if exists (select 1 from sysobjects where name=''GetList'' and type=''p'')');
add('drop procedure GetList');
EXECSQL;
Close;
clear;
add('create procedure GetList');
add('@table varchar(20),@classes varchar(20)');
add('as');
add('begin');
add('declare @sql as varchar(100) ');
add('set @sql=''select * from ''+@table+'' where 1=1'' ');
add('IF(@classes<>0)');
add('set @sql = @sql+''and classes='' + @classes');
add('exec(@sql)');
add('end');