
这过程是为了查到表中的字段名类似@str的所有表
如果存在,刚输出select [fieldname] from [tablename]
if exists() --如果结果集不为空
print--则输出 select [fieldname] from [tablename]
axusertype是字段类型,
具体可以下语句查询select from systypes where xtype in (175,239,231,167,56,60,108,106)
a 表为syscolumns 是系统字段表,存着当前数据库所有对象的字段名
b 表为sysobjects 是系统对象表,存着当前数据库所有的对象(表,视图,过程,索引,关健字,约束等)
xtype='U'是用户表
astatus>=0这个条件是没有用的,MSSQL 系统字段表的status都是>=0的
整个过程核心为一个游标cursor
select s=''
from syscolumns a
join sysojbects b on aid = bid
where
open cursor
fetch --读到@S
while --开始循环
execute @S
fetch
end
释放 cursor
你的问题是bname无效 那是有效的b-->sysobjects
其实这个可以写得简单点不用写得这么复杂
可以这么写:
create procedure procSelect (@str varchar(100))
as
select 'select ' + AName + ' from ' + BName
from syscolumns A
left join sysobjects B on Aid = Bid
where Bxtype = 'u' and AName like '%' + @str + '%'
and Axusertype in (175,239,231,167,56,60,108,106)可以,有三种方式
1用javascript给select添加选项
点击提交按钮时执行js方法
服务器控件一般都有这个属性比如button
OnClientClick=""
js里写将选中的值赋给hidden控件,hidden可以在后台获取
2用url跳转将选择的值用参数的形式传过去
也是要点击提交按钮时执行js方法
3ajax方式,类似于第二种方法
不明白可留言
方法一:cebian6这个DIV的li里面放一个Literal控件,这个Literal控件最后不会生成任何HTML代码,只会有你给它赋的值。
方法二:cebian6这个DIV的li服务器化,即aspx页面里,
;CS页面里,testInnterHtml=你的值。方法三:用老的ASP方法,直接在aspx页面里赋值。
把DataTabledt写成公共变量,即publicDataTabledt,声明此公共变量时,声明在Page_Load方法以外。在ASPX页面中写
{
ResponseWrite(dr[1]ToString()"
");
}
%
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)