create proc myproc
@sqltxt varchar(1024)
as
............
exec('Declare curName cursor for '+@sqltxt+'
open curName
Fetch Next from curName into .......
.......... ')
@sqltxt varchar(1024)
as
............
exec('Declare curName cursor for '+@sqltxt+'
open curName
Fetch Next from curName into .......
.......... ')
二楼将所有的CURSOR部分均变成EXEC的一个参数,这样我怎么Fetch 到自己的变量?我的应用是这样的:
1。存储过程通过参数接受查询条件,然后我对表的固定字段 通过 传入的条件进行查询。
比如:
存在表 t_tab(col1,col2,col3)
存在需要编写的存储过程 myproc(@sqlwhere)
调用 myproc('col2 = ''1'' and col3=''3'' ')那么,myproc该如何写呢?
如下是一个框架:
create PROCEDURE myproc
(@sqltxt varchar(1024)
)
as
begin
DECLARE @aaa varchar(100)
DECLARE @bbb varchar(100)
DECLARE @ccc varchar(100) DECLARE myCur CURSOR FOR
Select col1,col2,col3
From t_tab
--------------------------请问在此处如何加上通过参数传入的条件???????????????
OPEN myCur
FETCH NEXT FROM myCur INTO @aaaa,@bbbb,@cccc
WHILE (@@FETCH_STATUS = 0 )
BEGIN
...........
FETCH NEXT FROM myCur INTO @aaaa,@bbbb,@cccc
END
CLOSE myCur
.....
end
再问一个 很初浅的问题:
在存储过程中,我执行了一个select语句。或exec (' select col1 col2 from t_tab ')
此时,在该语句后面如何取得其select出来的结果?
。存储过程通过参数接受查询条件,然后我对表的固定字段 通过 传入的条件进行查询。
比如:
存在表 t_tab(col1,col2,col3)
存在需要编写的存储过程 myproc(@sqlwhere)
调用 myproc('col2 = ''1'' and col3=''3'' ')那么,myproc该如何写呢?
如下是一个框架:
create PROCEDURE myproc
(@sqltxt varchar(1024)
)
as
begin
DECLARE @aaa varchar(100)
DECLARE @bbb varchar(100)
DECLARE @ccc varchar(100)
DECLARE @mysql varchar(1024)
Set @mysql = ' select col1,col2,col3 from t_tab where ' + @sqltxt 接下来,如何做呢?
如果Exec (@mysql) 那么如何取得@mysql select出来的结果?
或者,有其他什么办法吗?
end
@sqltxt nvarchar(1024)
as
DECLARE @aaa varchar(100)
DECLARE @bbb varchar(100)
DECLARE @ccc varchar(100)
declare @sqlstr nvarchar(400) set @sqlstr=N'
DECLARE myCur CURSOR FOR
Select col1,col2,col3 From t_tab'+@sqltxt+'
OPEN myCur
FETCH NEXT FROM myCur INTO @aaaa,@bbbb,@cccc
WHILE (@@FETCH_STATUS = 0 )
BEGIN
...........
FETCH NEXT FROM myCur INTO @aaaa,@bbbb,@cccc
END
CLOSE myCur
Deallocate mycur'EXEC sp_executesql @sqlstr,
N'@aaaa varchar(100), @bbbb varchar(100), @cccc varchar(100)',
@aaaa, @bbbb, @cccc
.....
go
服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 49
过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
AS
DECLARE @sqltxt varchar(2048)
DECLARE @aaa varchar(10)
set @aaa = 'A '
set @sqltxt = N' select name from spt_values where type = @aaa '
EXEC sp_executesql @sqltxt,
N'@aaa varchar(10)',
@aaa
RETURN 然后运行看看。
AS
DECLARE @sqltxt varchar(2048)
DECLARE @aaa varchar(10)
set @aaa = '''A'''
set @sqltxt = N' select name from spt_values where type = @aaa '
EXEC sp_executesql @sqltxt,
N'@aaa varchar(10)',
@aaa
go--有什么问题呢?
DECLARE @sqltxt nvarchar(2048)
AS
DECLARE @sqltxt nvarchar(4000) --请申明为nvarchar
DECLARE @aaa varchar(10)
set @aaa = '''A'''
set @sqltxt = ' select * from medicaltypedict where medicaltypename = @aaa '
EXEC sp_executesql @sqltxt,
N'@aaa varchar(10)',
@aaa
go