oracle中怎么select出一个值赋给变量,然后另一句话使用该变量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中怎么select出一个值赋给变量,然后另一句话使用该变量?相关的知识,希望对你有一定的参考价值。
定义一个变量 STATUS char(2)
我先 select u_status from T where id=1 取出status 赋给 STATUS
然后 update T set u_status = STATUS where id=2 set的之后,值是那个变量
直接将结构成员的值赋给变量
【中文标题】直接将结构成员的值赋给变量【英文标题】:Directly assign value of struct member into variable 【发布时间】:2021-08-28 15:31:51 【问题描述】:我遇到了以下代码,非常新颖有趣。
u8 m_var = stptfunc()->mem;
以前从未见过这种初始化。代码编译并运行良好。 我只是好奇这是否是一种常见的做法。
通常我会这样编码...
strtype *ptrfunc()
// statements
sttype *stvar = ptrfunc();
u8 var = stvar->mem;
示例代码:
typedef unsigned char u8;
typedef struct
u8 mem;
sttype;
sttype *stptfunc(void)
static sttype stvar;
stvar.mem = 255;
return &stvar;
int main()
u8 m_var = stptfunc()->mem;
printf("value of %d",m_var);
return 0;
输出 [1]:https://i.stack.imgur.com/rSUaD.png
【问题讨论】:
之所以有效,是因为stptfunc
正在返回static
变量的地址。以我的经验,这不是常见的做法 - 但它可能是。我想这取决于你问谁。
@JohnnyMopp 嗨......是的,它工作正常。这是一种常见的做法吗?
以前从未见过这样的做法,我个人认为这是非常糟糕的做法:)
【参考方案1】:
stptfunc()->mem
表示stptfunc
是一个返回指针的函数,该指针被取消引用以获取其mem
字段。由于我们拥有整个程序,我们可以看到这个假设成立。
这可能是不好的做法。如果stptfunc
返回NULL
怎么办?不能保证不会。
在这样一个简单的程序中,这没什么大不了的,但这是一个不好的做法。
此外,根据 cmets,与使用 malloc/free 相比,函数中的静态变量可能是一种非常糟糕的做法。
【讨论】:
以上是关于oracle中怎么select出一个值赋给变量,然后另一句话使用该变量?的主要内容,如果未能解决你的问题,请参考以下文章
sql server 2000 如何把select的值赋给一个变量