相关疑难解决方法(0)

将存储过程的结果插入临时表

我该怎么办SELECT * INTO [temp table] FROM [stored procedure]?不FROM [Table],没有定义[temp table]

Select所有数据都可以BusinessLine正常tmpBusLine工作.

select *
into tmpBusLine
from BusinessLine
Run Code Online (Sandbox Code Playgroud)

我尝试相同,但使用stored procedure返回数据,并不完全相同.

select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
Run Code Online (Sandbox Code Playgroud)

输出消息:

消息156,级别15,状态1,行2关键字'exec'附近的语法不正确.

我已经阅读了几个创建一个与输出存储过程结构相同的临时表的例子,它工作正常,但不提供任何列会很好.

sql t-sql sql-server stored-procedures sql-server-2005

1526
推荐指数
24
解决办法
189万
查看次数

光标内的光标

主要问题是将行的索引更改为1,2,3 ..其中contact-id和type是相同的.但是所有列都可以包含完全相同的数据,因为一些前雇员搞砸了并通过contact-id和type更新所有行.不知何故,有些行没有混乱,但索引行是相同的.这完全是混乱.

我试图使用一个带有来自外部光标的变量的内部游标.但似乎它卡在内部光标中.

查询的一部分如下所示:

Fetch NEXT FROM OUTER_CURSOR INTO @CONTACT_ID,  @TYPE
While (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)

    DECLARE INNER_CURSOR Cursor 
    FOR 
    SELECT * FROM CONTACTS
    where CONTACT_ID = @CONTACT_ID
    and TYPE = @TYPE 

    Open INNER_CURSOR 

    Fetch NEXT FROM INNER_CURSOR 
    While (@@FETCH_STATUS <> -1)
    BEGIN
    IF (@@FETCH_STATUS <> -2)
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?是@@ FETCH_STATUS暧昧还是什么?

编辑:如果我不在内部游标内使用此代码,一切看起来很好:

UPDATE CONTACTS
SET INDEX_NO = @COUNTER
where current of INNER_CURSOR
Run Code Online (Sandbox Code Playgroud)

编辑:这是大局:

BEGIN TRAN

DECLARE @CONTACT_ID VARCHAR(15)
DECLARE @TYPE VARCHAR(15)
DECLARE @INDEX_NO  SMALLINT
DECLARE @COUNTER SMALLINT
DECLARE …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 cursor

27
推荐指数
3
解决办法
15万
查看次数