把表名、字段名作为存储过程参数输入(100分求)

lvjianjin 2004-09-08 09:48:13
----------------------------------
产品分类表(CPBMCLSB)机构如下
CLSID CLSNAME ParentID
1 产品分类树 0
2 DVD光驱 1
3 CD-ROM光驱 1


--------------
我的存储过程如下:

CREATE proc Tree_Product_IsParentNode
@NodeID varchar(100),
@ParentID varchar(100)
as
declare @pid int
declare @pname varchar(100)
declare @re table(Nodeid int,NodeName varchar(50),sort int )
declare @MySort int
set @MySort=1
select @pid=PARENTID,@pname=CLSNAME from CPBMCLSB where CLSID=@NodeID

while @pid<>0
begin
insert into @re(Nodeid,NodeName,sort) values(@pid,@pname,@MySort)
select @pid=PARENTID,@pname=CLSNAME from CPBMCLSB where CLSID=@pid
set @MySort=@MySort+1
end
select * from @re where Nodeid=@ParentID
GO


---------------------------
我的存储过程如上:
要求把"select @pid=PARENTID,@pname=CLSNAME from CPBMCLSB where CLSID=@NodeID"里的
"PARENTID字段、CLSNAME字段、表名CPBMCLSB"用存储过程输入参数代替
...全文
168 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvjianjin 2004-09-08
  • 打赏
  • 举报
回复
To: zjcxc(邹建)

非常感谢,完全处理好了。

本来100分全给您的,
但,来者是客。所以每人给一点分以表谢意.

希望不要介意。

再次感谢邹建!!!
zjcxc 2004-09-08
  • 打赏
  • 举报
回复
CREATE proc Tree_Product_IsParentNode
@NodeID varchar(100),
@ParentID varchar(100),
@fd_PARENTID sysname,
@fd_CLSNAME sysname,
@fd_CLSID sysname,
@tbname sysname
as
declare @s nvarchar(4000)
set @s='
declare @pid int
declare @pname varchar(100)
declare @re table(Nodeid int,NodeName varchar(50),sort int )
declare @MySort int
set @MySort=1
select @pid=['+@fd_PARENTID+'],@pname=['+@fd_CLSNAME+'] from ['+@tbname+'] where ['+@fd_CLSID+'=@NodeID

while @pid<>0
begin
insert into @re(Nodeid,NodeName,sort) values(@pid,@pname,@MySort)
select @pid=['+@fd_PARENTID+'],@pname=['+@fd_CLSNAME+'] from ['+@tbname+'] where ['+@fd_CLSID+']=@pid
set @MySort=@MySort+1
end
select * from @re where Nodeid=@ParentID'
exec sp_executesql @s
,N'@NodeID varchar(100),@ParentID varchar(100)'
,@NodeID,@ParentID
GO
lvjianjin 2004-09-08
  • 打赏
  • 举报
回复
To: pengda1i(冒牌大力 V0.2)

while 循环里还有一句
lvjianjin 2004-09-08
  • 打赏
  • 举报
回复
To: pengda1i(冒牌大力 V0.2)

我的存储过程如上:
要求把存储过程里的两句
"select @pid=PARENTID,@pname=CLSNAME from CPBMCLSB where CLSID=@NodeID"
里的"CLSID字段,PARENTID字段、CLSNAME字段、表名CPBMCLSB"

用存储过程输入参数代替
lvjianjin 2004-09-08
  • 打赏
  • 举报
回复
我的存储过程作用是:
:判定两个节点之间是否是父子关系
并返回当前父节点信息
luckyprg 2004-09-08
  • 打赏
  • 举报
回复

exec sp_executesql @sql
这样才行。
lvjianjin 2004-09-08
  • 打赏
  • 举报
回复
TO:liuxiang_csdn(刘翔)

先感谢支持

如果直接套用您的语句,肯定不行的。

请按我上面的存储过程修改,谢谢
friendliu 2004-09-08
  • 打赏
  • 举报
回复
declare @sql varchar(1000)
declare @tbl varchar(10)
set @tbl='a'
set @sql='select * from '
set @sql=@sql +@tbl
exec @sql
pengda1i 2004-09-08
  • 打赏
  • 举报
回复
CREATE proc Tree_Product_IsParentNode
@NodeID varchar(100),
@ParentID varchar(100),
@PARENTID varchar(50),
@CLSNAME varchar(50),
@CPBMCLSB varchar(50)
as
declare @sql Nvarchar(4000)
set @Sql='
declare @pid int
declare @pname varchar(100)
declare @re table(Nodeid int,NodeName varchar(50),sort int )
declare @MySort int
set @MySort=1
select @pid='+@PARENTID+',@pname='+@CLSNAME+' from '+@CPBMCLSB+' where CLSID=@NodeID

while @pid<>0
begin
insert into @re(Nodeid,NodeName,sort) values(@pid,@pname,@MySort)
select @pid=PARENTID,@pname=CLSNAME from CPBMCLSB where CLSID=@pid
set @MySort=@MySort+1
end
select * from @re where Nodeid=@ParentID
'

exec sp_executesql @sql,N'@NodeID varchar(100),@ParentID varchar(100)',@NodeID,@ParentID

GO
liuxiang_csdn 2004-09-08
  • 打赏
  • 举报
回复
exec(' select ' + @字段名 + ' from ' + @表名)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧