日期:2014-05-18  浏览次数:20828 次

为什么创建了存储过程,但调用时缺提示找不到
我创建了个查看某个数据库里面所有用户表的存储过程,但是创建好后提示找不到此存储过程,我还是在MyDB下调用,请看代码:
SQL code

USE MyDB
GO
CREATE PROCEDURE spCKtablename
@dbname VARCHAR(200)
AS
DECLARE @strsql VARCHAR(MAX)
BEGIN
SET @strsql='USE'+@dbname+'GO'+'SELECT name FROM sys.sysobjects WHERE xtype IN'+'('+'U'+')'+
 'AND type='+'U'+ 'ORDER BY name'
 EXEC(@strsql)
 END


高手麻烦解决下。

------解决方案--------------------
重新刷新下
或者
select * from sys.sysobjects where name='' and type='p'
------解决方案--------------------
USE MyDB
GO
CREATE PROCEDURE sp_CKtablename@dbname VARCHAR(200)
AS
DECLARE @strsql VARCHAR(MAX)
BEGIN
SET @strsql='USE'+@dbname+'GO'+'SELECT name FROM sys.sysobjects WHERE xtype IN'+'('+'U'+')'+
 'AND type='+'U'+ 'ORDER BY name'
 EXEC(@strsql)
 END
如果加了个杠可能就在MASTER了,如果没加,你自己检查有没有在MYDB下有这个过程



------解决方案--------------------
不知道mssql能不能建立在user下面的存储过程。
------解决方案--------------------
建议重启SSMS
------解决方案--------------------
SQL code
alter PROCEDURE spCKtablename
@dbname VARCHAR(200)
AS
DECLARE @strsql VARCHAR(MAX)
BEGIN
SET @strsql='USE '+@dbname+' SELECT name FROM sys.sysobjects 
    WHERE xtype =''X''AND type=''P'' ORDER BY name'

 EXEC(@strsql)
 END

------解决方案--------------------
查看你数据库下所有存储过程,看看有没有你建立的
SQL code
select * from databaseName where OBJECTPROPERTY(id, N'IsProcedure') = 1