标签: temporary

截断事务中的Oracle临时表,截断*ALL*Temp表

我有一些C#代码,它在事务中创建了几个带有"ON COMMIT DELETE ROWS"选项的Oracle临时表.

在事务内部,我将一堆行插入到各种临时表中.在某些情况下,我需要截断一个特定的临时表,以便我可以从该表开始新的,但保留其他临时表.

我发现Oracle在执行Truncate时必须执行隐式COMMIT,因为不仅特定临时表被截断,而且所有临时表都被截断.

好的,我在别处读过Truncate命令被认为是一个DDL命令,这就是处理提交的原因,这导致我的"ON COMMIT DELETE ROWS"临时表被清除.

如果这是真的,那么创建一个新临时表的行为也不会是一个DDL命令,并且它也会跳过同一个提交清除所有其他临时表吗?如果是这样,我没有看到这种行为.我在代码中创建了新的临时表,发现在创建新的临时表之后,先前创建的临时表仍然保持其行的完整性.

这里有一些C#代码演示了这个问题(这里没有包含帮助程序):

private void RunTest()
{
  if (_oc == null)
    _oc = new OracleConnection("data source=myserver;user id=myid;password=mypassword");

  _oc.Open();
  _tran = _oc.BeginTransaction();

  string tt1 = "DMTEST1";
  AddTempTable(tt1, false);
  int TempTableRowCount0 = GetTempTableRowCount(tt1);

  AddRows(tt1, 5);
  int TempTableRowCount10 = GetTempTableRowCount(tt1);

  string tt2 = "DMTEST2";
  AddTempTable(tt2, false);
  int TempTableRowCount12 = GetTempTableRowCount(tt1); // This will have the same value as TempTableRowCount10
  AddRows(tt2, 6);
  int TempTableRowCount13 = GetTempTableRowCount(tt2); // This will have the same value …
Run Code Online (Sandbox Code Playgroud)

c# oracle transactions temporary

2
推荐指数
1
解决办法
2119
查看次数

如果我删除const,为什么调用boost :: shared_ptr不能在c ++中编译?

#include <boost/smart_ptr.hpp>

class Base {
};

class Derived : public Base {
  public:
    Derived() : Base() {}
};

void func(/*const*/ boost::shared_ptr<Base>& obj) {
}

int main() {
  boost::shared_ptr<Base> b;
  boost::shared_ptr<Derived> d;
  func(b);
  func(d);
}
Run Code Online (Sandbox Code Playgroud)

这用func的签名中的const编译,但不是没有它.该错误出现在呼叫的行中func(d);

有什么提示吗?

c++ const temporary shared-ptr

2
推荐指数
1
解决办法
203
查看次数

删除bash中所有子目录中的所有临时文件(以〜结尾)

如何删除目录及其子目录中的所有临时文件(因此它以递归方式运行)?

bash file temporary delete-file

2
推荐指数
1
解决办法
1898
查看次数

创建具有固定值的临时表

如何在PostgreSQL中创建一个临时表,其中包含一列"AC"并包含这些4位数值:

  • 放大
  • INCI
  • 挡开

本质上,表有更多的值,这应该只是作为一个例子.

sql postgresql temporary

2
推荐指数
1
解决办法
7271
查看次数

python表达式中的临时变量

一些(很多?所有?)函数式编程语言(如StandardMLHaskell)在表单let ... in ...中有一种表达式,可以使用表达式本身的范围创建临时变量.

例: let a=b*c in a*(a+1)

似乎在Python中没有类似于此的表达式构造.

动机:

例如,lambda函数体必须是(一)表达式.不是两个表达.不是声明(赋值是声明而不是表达式).

此外,在编写函数式表达式和python 中的一般单行程序时,事情很容易变得混乱(参见Python 2列表理解和评估的回答).

这种结构的要点是避免重复(有时会导致重新计算),例如,l[:l.index(a)]+l[l.index(a)+1:]而不是假设let i=l.index(a) in l[:i]+l[i+1:]


我们如何在python2/python3中实现类似的语言功能?

python functional-programming temporary

2
推荐指数
1
解决办法
658
查看次数

INSERT 不适用于 PL/SQL 块中的 GLOBAL TEMPORARY TABLE

我是 Oracle 脚本新手,在将数据插入全局临时表时遇到问题。这是我在 Toad 中创建的脚本:

    SET SERVEROUTPUT ON;

    DECLARE
        tempTwwIDExist NUMBER;
        v_sql LONG; 
    BEGIN
        SELECT COUNT(*) INTO tempTwwIDExist FROM USER_TABLES WHERE table_name = UPPER('tempTwwID');
        DBMS_OUTPUT.PUT_LINE(tempTwwIDExist);

        IF (tempTwwIDExist > 0) THEN 
        BEGIN
                EXECUTE IMMEDIATE 'TRUNCATE TABLE tempTwwID';
                EXECUTE IMMEDIATE 'DROP TABLE tempTwwID';
        END;
        END IF;

        EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tempTwwID (id NUMBER NOT NULL, SITEID NUMBER) ON COMMIT DELETE ROWS';

        EXECUTE IMMEDIATE 'INSERT INTO tempTwwID (id, SITEID) VALUES (1,123)';

    END;
    /
Run Code Online (Sandbox Code Playgroud)

但是,当我运行 SELECT 语句以从 tempTwwID 获取所有数据时,尽管此脚本使用 EXECUTE IMMEDIATE 运行 …

oracle toad global temporary

2
推荐指数
1
解决办法
6647
查看次数

2
推荐指数
1
解决办法
2606
查看次数

C++函数什么时候删除返回值?

我有以下 C++ 代码。

string getName()
{
    return "C++";
}

void printName(const char* name)
{
    cout << name << endl;
}

int main()
{
    printName(getName().c_str());
}
Run Code Online (Sandbox Code Playgroud)

该函数getName返回一个string. 我将函数c_str的指针传递给函数。我想知道在调用函数之前返回的内容是否会被删除。如果不是那么什么时候删除返回值。stringprintNamestringprintName()

c++ string temporary return-value lifetime

2
推荐指数
1
解决办法
1055
查看次数

这种引用的使用不正确吗?

我有以下代码:

std::vector<A>& Get() { return some_object; };

for(int i=0; i<Get().size(); ++i) {
    x->push_back(Get()[i]);
}
Run Code Online (Sandbox Code Playgroud)

但是当我第一次调用size()时,我得到了垃圾值.我想某些临时的东西会被删除,但我不确定...有人能告诉我发生了什么吗?

编辑:我some_object是一个静态向量,所以在这个例子中它永远不会被删除

c++ reference temporary

1
推荐指数
1
解决办法
84
查看次数

将临时对象传递给std :: cout

我有这个非常简单的测试代码:

std::string a = "A"
std::string b = "B"

std::cout << a + b << std::endl;
Run Code Online (Sandbox Code Playgroud)

虽然它在GNU G ++,我很担心,如果是便携通过临时a + bstd::cout,如,是性病::法院保证接收到正确的内存块?

非常感谢!

c++ temporary

1
推荐指数
1
解决办法
180
查看次数