CREATE PROC ProcName @tablename VARCHAR(32) AS select * from @tablename 请问,这样是不是可以呢?好像不行吧.
CREATE PROC ProcName @tablename VARCHAR(32) AS select * from @tablename 请问,这样是不是可以呢?好像不行吧.
create procedure procname @tablename varchar(100) as decalre @str_sql varchar(1000) set @str_sql=delete from @tablename where .....
execsql(@str_sql)
create procedure procname @tablename varchar(100) as decalre @str_sql varchar(1000)select @str_sql='delete from '+ @tablename +' where .....'
exec @str_sql return
如果你用sql server的话,DED的写法应该可以。
但是出现一个问题如下 DECLARE @EXEC VARCHAR(100) SELECT @EXEC=('UPDATE ' +@TABLENAME+ ' SET '+@COLUMNNAME+'='+@TEMPNUMBER+ ' WHERE CURRENT OF MCUR_CHANGE') EXEC @EXEC 该句应该与这句相同 EXEC ('UPDATE ' +@TABLENAME+ ' SET '+@COLUMNNAME+'='+@TEMPNUMBER+ ' WHERE CURRENT OF MCUR_CHANGE') 然而,第一句不能够执行,而第二句可以执行, 而且还有一个问题,如何在一个字符串中加入一个单引号
MS SQL的串,可以用双写单引号表示一个单引号字符。如:select @b='name' select @a=''''+@b+''','@a就得到这样的串: ['name',]
create procedure proc_table(in v_table_name varchar(100))declare stmt varchar(1000); declare cur cursor for s;set stmt = 'select * from '||v_table_name; prepare s from stmt; open cur;
真的想知道麼?
你是真的想知道麼?我也是!曾經想過用變量表名!
來做個通用的存儲過程。
但發覺不知道怎麼下手!
現有個方法不知道合不合你用:
CREATE PROC ProcName
@SQL VARCHAR(500)
AS
EXECUTE(@SQL)隻傳入表名的話,就給@sql變量添點你需要的東西羅。祝你好運
@tablename VARCHAR(32)
AS
select * from @tablename
请问,这样是不是可以呢?好像不行吧.
@tablename VARCHAR(32)
AS
select * from @tablename
请问,这样是不是可以呢?好像不行吧.
as
decalre @str_sql varchar(1000) set @str_sql=delete from @tablename where .....
execsql(@str_sql)
as
decalre @str_sql varchar(1000)select @str_sql='delete from '+ @tablename +' where .....'
exec @str_sql
return
DECLARE @EXEC VARCHAR(100)
SELECT @EXEC=('UPDATE ' +@TABLENAME+ ' SET '+@COLUMNNAME+'='+@TEMPNUMBER+ ' WHERE CURRENT OF MCUR_CHANGE')
EXEC @EXEC
该句应该与这句相同
EXEC ('UPDATE ' +@TABLENAME+ ' SET '+@COLUMNNAME+'='+@TEMPNUMBER+ ' WHERE CURRENT OF MCUR_CHANGE')
然而,第一句不能够执行,而第二句可以执行,
而且还有一个问题,如何在一个字符串中加入一个单引号
曾经看到过一个技巧, 是专门讲转移字符的.我回去查查,下次告诉你.
select @a=''''+@b+''','@a就得到这样的串: ['name',]
declare cur cursor for s;set stmt = 'select * from '||v_table_name;
prepare s from stmt;
open cur;