CREATE or REPLACE PROCEDURE [dbo].[SP_FindValueInDB]
(
@value VARCHAR(1024)

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql VARCHAR(1024) 
DECLARE @table VARCHAR(64) 
DECLARE @column VARCHAR(64) 
CREATE TABLE #t ( 
tablename VARCHAR(64), 
columnname VARCHAR(64) 

DECLARE TABLES CURSOR 
FOR 
SELECT o.name, c.name 
FROM syscolumns c 
INNER JOIN sysobjects o ON c.id = o.id 
WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239) 
ORDER BY o.name, c.name 
OPEN TABLES 
FETCH NEXT FROM TABLES 
INTO @table, @column 
WHILE @@FETCH_STATUS = 0 
BEGIN 
SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] ' 
SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') ' 
SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', ''' 
SET @sql = @sql + @column + ''')' 
EXEC(@sql) 
FETCH NEXT FROM TABLES 
INTO @table, @column 
END 
CLOSE TABLES 
DEALLOCATE TABLES 
SELECT * 
FROM #t 
DROP TABLE #t 
End
*********************************************************************************************
我需要查询整个数据库中某个特定值所在的表和字段,在网上搜到上面这个存储过程代码。在oracle sql developer中Run Statement通不过,报以下错误,求指导啊!Error report:
ORA-04050: invalid or missing procedure, function, or package name
04050. 00000 -  "invalid or missing procedure, function, or package name"
*Cause:    The required procedure, function, or package name is invalid
           or missing.
*Action:   Specify a valid name.

解决方案 »

  1.   


    你确定这个是ORACLE的存储过程,而不是SQL SERVER的?
      

  2.   

    你这是SQLSERVER的存储过程,不是ORACLE的
      

  3.   

    也不是SQL Server的,SQL Server没有CREATE or REPLACE PROCEDURE 这样的语法
      

  4.   

    oracle declare变量是不是没有@前缀啊、
      

  5.   

    CREATE or REPLACE PROCEDURE [dbo].[SP_FindValueInDB]ORA-04050: invalid or missing procedure, function, or package name
    ======================================================================
    先解决此错误。
    方括号,dbo,都是典型的sql server 语法。如果要用,首先去掉方括号,然后确定 oracle 中有 dbo 用户。
      

  6.   

    sqlserver的存储过程,发错板块了。
      

  7.   

    我的疑问是,存储过程中如果要声明变量,直接定义一个变量就行了,没有必要用declare.并且,定义变量要放在begin之前,而不是begin之后。