在oracle中一条sql语句长度限制的可能因素的探讨(附加讨论windows控制台)

本文探讨了在Oracle环境中,SQL语句长度限制可能受控于控制台(console)的字符缓存大小和SQL*Plus工具自身的限制。控制台进程可以继承或创建新的控制台,其字符缓存大小限制了用户输入,如在Windows的cmd中,超过特定长度的字符输入将无法继续。而SQL*Plus工具内部缓存设置为2499个字符,超过此长度且无换行符时,会提示SP2-0027错误。通过文件传递SQL语句不受控制台缓存限制,但每行仍有2499字符的限制。结论是,SQL语句长度本身无严格限制,但在特定客户端工具如SQL*Plus中,存在实际的行长度约束。
摘要由CSDN通过智能技术生成

什么是windows控制台


控制台为字符界面的应用程序管理(数据的)输入输出。

控制台是为字符界面程序提供I/O的一种接口。它包括一个输入缓冲区和多个屏幕缓冲区。

控制台函数能够以不同级别访问控制台。

(操作系统)系统在启动命令行处理程序的时候创建控制台,在控制台进程中用户可以为新进程创建新控制台或继承命令行处理程序的控制台。

【说明:


如cmd中调用sqlplus时,sqlplus没有新创建一个新的Console,而还是用原来cmd的Console


上述例子只是说明了在控制台进程中用户可以为新进程继承命令行处理程序(cmd??)的控制台,并没有说明在控制台进程中用户可以为新进程创建新控制台。


        CreateProcess创建一个带有控制台的控制台进程。
        AllocConsole为没有控制台的控制台进程创建新控制台。
        FreeConsole删除进程继承或由AllocConsole创建的控制台。

【说明:

一个控制台里的输入输出数据既可以来自纯输入设备(如,键盘、鼠标),也可以来自像硬盘这样的既可输出又可输入的IO设备

如果一个控制台进程带有控制台,则该控制台进程就是纯粹的后台进程,因为没带有控制台,就不用和IO设备(包括输入和输出的IO设备)打交道,确切地说是不用于纯输入设备(如,键盘、鼠标)打交道(即所谓用户交互,要实现用户交互首先必须有一个用户人可以看到的窗口,所以这也是为什么每一个控制台对应都有一个窗口的原因。)。当然,只和硬盘(既可输出又可输入的IO设备)打交道的进程也是后台进程。虽然硬盘具有输入功能,但是从硬盘的输入不叫用户交互,而只能从像键盘、鼠标这样的输入设备输入才叫用户交互,因为后者输入的内容是什么是由使用该进程的人来决定的,而前者输入的内容是什么是不由人来决定的。


        AttacthConsole把进程连接到控制台。一个进程只能连接到一个控制台,但一个控制台可以连接到多个进程。GetConsoleProcessList获取某个控制台所有进程的列表。

【说明:

a、一个进程只能连接到一个控制台:

这里我顺便提一下就是:对于每个进程他有且只能有一个Console:我们可以在GUI程序里面创建Console但是只能创建一个,如果是在CUI程序(即控制台程序)中,我们就不能再创建另外的一个Console(即控制台)了!!!

来自:

http://vanshell.blog.51cto.com/890307/422909
Windows下Console和Win32程序差异

b、通过继承的方式,可以使得一个控制台可以连接到多个进程,即一个控制台多个进程使用:

在控制台进程中用户可以为新进程继承命令行处理程序(cmd??)的控制台

例如,cmd中调用sqlplus时,sqlplus没有新创建一个新的Console,而还是用原来cmd的Console

一个进程只能连接到一个控制台,但一个控制台可以连接到多个进程。GetConsoleProcessList获取某个控制台所有进程的列表。这个类似于,Oracle数据库中的共享连接模式,将各个进程的请求队列化,控制台(进程)分别处理各个请求。


参考:

console控制台


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值