sql server创建存储过程初始化失败,不知道为什么,求大侠帮忙看看

问题描述

sql server创建存储过程初始化失败,不知道为什么,求大侠帮忙看看

CREATE PROCEDURE p_getLogFilter
@account VARCHAR(20),
@split VARCHAR(10)
AS
BEGIN
DECLARE @splitlen INT,
@au_id CHAR(50),
@s VARCHAR(MAX),
@cform VARCHAR(255),
@dbname VARCHAR(200),
@sqlstr NVARCHAR(MAX)
--获取数据库名
SELECT @dbname=dbname FROM accinfo WHERE accid=@account
--创建临时表
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb..##templogdescp') AND type='U')
DROP TABLE ##templogdescp

CREATE TABLE ##templogdescp(operate VARCHAR(MAX),cform VARCHAR(255))
DELETE FROM ##templogdescp

SET @sqlstr = 'select @au_id = min( cguid ) from ['+@dbname+'].[dbo].[CM_LOG] where ctype=1 and caction=''查询'''
EXEC SP_EXECUTESQL @sqlstr,N'@au_id char(20) OUTPUT', @au_id OUTPUT
--select @au_id = min( cguid ) from CM_LOG where ctype=1 and caction='查询'

SET @splitlen=LEN(@split+'a')-2
WHILE @au_id IS NOT NULL
BEGIN
--set @s = (select substring(CDESCP,charindex('[',CDESCP)+1,len(CDESCP)-(case when charindex('[',CDESCP)!=0 then charindex('[',CDESCP)+1 else 0 end)) from [A399992014].[dbo].CM_LOG where cguid = @au_id)
--set @cform = (select cform from [A399992014].[dbo].CM_LOG where cguid=@au_id)
SET @sqlstr = 'select @s=substring(CDESCP,charindex(''['',CDESCP)+1,len(CDESCP)-(case when charindex(''['',CDESCP)!=0 then charindex(''['',CDESCP)+1 else 0 end)) from ['+@dbname+'].[dbo].CM_LOG where cguid = '''+@au_id+''''
EXEC SP_EXECUTESQL @sqlstr,N'@s varchar(max) OUTPUT', @s OUTPUT
SET @sqlstr = 'select @cform=cform from ['+@dbname+'].[dbo].CM_LOG where cguid='''+@au_id+''''
EXEC SP_EXECUTESQL @sqlstr,N'@cform varchar(255) OUTPUT', @cform OUTPUT
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT ##templogdescp VALUES(LEFT(@s,CHARINDEX(@split,@s)-1),@cform)
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
END

 IF(@s IS NOT NULL)
 INSERT ##templogdescp VALUES(@s,@cform)

 --select @au_id = min( cguid ) from [A399992014].[dbo].CM_LOG where cguid > @au_id and ctype=1 and caction='查询'
 SET @sqlstr = 'select @au_id = min( cguid ) from ['+@dbname+'].[dbo].CM_LOG where cguid > '''+@au_id+''' and ctype=1 and caction=''查询'''
EXEC SP_EXECUTESQL  @sqlstr,N'@au_id varchar(255) OUTPUT', @au_id OUTPUT

END

RETURN
END

时间: 2024-08-02 19:29:24

sql server创建存储过程初始化失败,不知道为什么,求大侠帮忙看看的相关文章

数据库 sql语言-SQL Server创建存储过程,计算每个同学的平均成绩并标记“优秀学生”

问题描述 SQL Server创建存储过程,计算每个同学的平均成绩并标记"优秀学生" 如题:请用命令行创建存储过程,计算每个同学的平均成绩,写入S_AVG表,平均成绩大于85的学生,Flag标记为"优秀学生",平均成绩低于60的的学生,Flag标记为"延迟毕业",其他学生Flag标记为"常规学生". 能查到的有关例子太少了,自学不成功,求大神解答-- 解决方案 分步做 1.计算每个同学的平均成绩,写入S_AVG表 insert

Sql Server 创建存储过程

  Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器

jdbc-sql语句中的?赋值失败??求大家帮忙找找原因,在下感激不尽

问题描述 sql语句中的?赋值失败??求大家帮忙找找原因,在下感激不尽 private Connection conn = null; private PreparedStatement pstmt = null; private ResultSet rs = null; public List supplierfindbyname(Supplierlocation su) { // TODO Auto-generated method stub List sulist = new ArrayL

SQL Server编写存储过程小工具(三)

server|存储过程 SQL Server编写存储过程小工具 功能:为给定表创建Update存储过程 语法: sp_GenUpdate <Table Name>,<Primary Key>,<Stored Procedure Name> 以northwind 数据库为例 sp_GenUpdate 'Employees','EmployeeID','UPD_Employees' 注释:如果您在Master系统数据库中创建该过程,那您就可以在您服务器上所有的数据库中使用该

SQL Server编写存储过程小工具(二)

server|存储过程 SQL Server编写存储过程小工具 以下是两个存储过程的源程序 /*=========================================================== 语法: sp_GenInsert <Table Name>,<Stored Procedure Name> 以northwind 数据库为例 sp_GenInsert 'Employees', 'INS_Employees' 注释:如果您在Master系统数据库中创建该

SQL Server与存储过程的比较

本文从多个角度阐述了SQL Server与存储过程的比较. ①为什么要使用存储过程? 因为它比SQL语句执行快. ②存储过程是什么? 把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句. ③来一个最简单的存储过程: CREATE PROCEDURE dbo.testProcedure_AXASselect userID fromUSERS order by userid desc 注:dbo.testProcedure_AX是你创建的存储过程名,可以改为:AXzhz等,别跟关键字冲突就行

sqlserver-如何获取SQL SERVER 2008 存储过程参数默认值

问题描述 如何获取SQL SERVER 2008 存储过程参数默认值 比如我的存储过程创建语句如下: CREATE PROC [dbo].[SearchBillDetail] ( @OpBeginDate DATETIME , @OpEndDate DATETIME , @BillTypeID INT , @BillOperType INT , @SaleOperID INT = 1, @DrCompID INT = NULL ) AS SET NOCOUNT ON -- 后面省略 这是我需要通

SQL Server中存储过程比直接运行SQL语句慢的原因

原文:SQL Server中存储过程比直接运行SQL语句慢的原因     在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Upd

sql server 创建临时表的使用说明_MsSql

临时表产生:A: SELECT INTO和B:CREATE TABLE + INSERT INTO 1. A 要比B 快很多.但是A会锁定tempdb的SYSOBJECTS.SYSINDEXES.SYSCOLUMNS表,在多用户并发的时候,容易产生阻塞其他的进程. 2. 在并发系统中是用B. 大数量的单个语句中,使用A. 创建临时表的方法:        方法一:      create table #临时表名(字段1 约束条件,                       字段2 约束条件,