当前位置:文章写作网 >日记 >日记 >取数据库名称和所有者的游标

取数据库名称和所有者的游标

2008-04-18 17:24 作者:tshfang 阅读量:4862 推荐18次 | 我要投稿

浪潮的数据库不能直接使用sa操作,必须使用软件建立的9999用户或者在表名成前面加上所有者。

这样出现了问题,多个数据库,每次在查询分析器中执行语句都要使用每个数据库的9999登陆。

很麻烦。

浪潮的数据库使用cwbase开头,后边是一个流水号。比如cebase0001,他的所有者是lc0001999。那么我们可以从sysdatabases中取出数据库名称,再取出数据库名称后边的流水号加上lc在加上9999作为所有者。这样我们可以以windows身份认证登陆,在master下边执行sql语句。

DECLARE @database varchar(30)

DECLARE authors_cursor CURSOR FOR

select name

from sysdatabases

where name like 'cwbase%' --查找属于浪潮软件的数据库

OPEN authors_cursor

FETCH NEXT FROM authors_cursor

INTO @database

WHILE @@FETCH_STATUS = 0

begin

DECLARE @id varchar(30) --存放流水号

DECLARE @sql nvarchar(100)

set @id=right(@database,4) --看你的流水号是几位后边的数字就是几。

set @sql='select * from '+@database+'.lc'+@id+'9999. '+'Goodsmovement'

--组装sql语句,比如查询出入库单据。等价于 select * from cwbase0001.lc00019999.goodsmovement

exec sp_executesql @Sql --执行上边sql语句

FETCH NEXT FROM authors_cursor

INTO @database --执行下个数据库的查询操作

END

CLOSE authors_cursor

DEALLOCATE authors_cursor

go

这篇文章不单是这对浪潮数据库,其实对学习sql语言很有帮助.

其他人在看啥

    《取数据库名称和所有者的游标》的评论 (共 0 条)

    • Guest::laugh
    • Guest::good