asp、delphi、oracle的技术文档总结

来源:互联网 发布:在淘宝搜什么是枪 编辑:程序博客网 时间:2024/04/30 06:45

1) Delphi向oracle中传递参数 如oracle中的参数名为erpcx 
答:如果想从表里取值到oracle,则erpcx:=trim(aq1.fieldbyname('erpcx').AsString);
否则直接用控件名字
语句为
with aperp do    
begin
connection:=dm.ADOCerp;      
parameters.Clear;       
procedurename:='pc_erpbominquery';       
parameters.CreateParameter(erpcx,ftstring,pdinput,60,erpcx); 此句为传参数语句
否则直接用 Parameters.CreateParameter('@erpcx',ftString,pdInput,100,edit5.text);        
ExecProc;    
end; 
  
2)sql取四舍五入职  round(字段名,小数点后位数如取整数为0) 
 
3)sql连接同一服务器的不同表的数据 
答:select * from 数据库名.dbo.表名 
 
4)要想从多个表里查数据,a里有5个 b里有3个 c里有2个显示时该如何去掉重复的部分呢
如 表a                  表b                    表c
id  education          id    guanxi        id  work
0001  1大学            0001    父子          0001  1公司
0001  2大学            0001    母子          0001  2公司
0001  3大学            0001    姐妹
0001  4大学
答:alter table a add px int identity(1,1)
go
alter table b add px int identity(1,1)
go
alter table c add px int identity(1,1)
go
select  a.id,a.education,guanxi=isnull(b.guanxi,''),[work]=isnull(c.[work],'') from a
left join b on a.px=b.px
left join c on a.px=c.px
go
alter table a drop column px
go
alter table b drop column px
go
alter table c drop column px

5)sql查询重复数据方法
select erpcx from n7cpl
group by erpcx
having Count(erpcx)>1

6)sql日期函数
Select  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)  --月的第一天
Select  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) -- 周一第一天
Select  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  --季度的第一天
Select  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  --上月最后一天
select datediff(day,2009-05-03,2009-05-01) --计算间隔天数
select dateadd(day,2,'2009-06-30 08:08:00') -- 计算2天后的日期

7)sql查询表中一半的数据(50%)
SELECT TOP 50 PERCENT * FROM Persons

8)sql类型转换
CAST([字段名] as varchar(4000))       
CONVERT(varchar(4000),[字段名])

9)oracle类型转换
to_date()    
to_number()    
to_char()


10)sql将截断字符串或二进制数据。语句已终止!
原因为字符宽度不够长,增加长度 如varchar(10) 改为varchar(50)

11)sql字段以逗号隔开
物料    供应商     百分比
aa        11         50
aa        22         60
bb        33         100

结果为
物料    供应商    百分比
aa      11,22    50,60
bb        33        100

解决办法为
SELECT item,gys=CAST(gys as varchar(100))
INTO #t FROM #t1
ORDER BY item
DECLARE @item varchar(100),@gys varchar(100)
UPDATE #t SET
    @gys=CASE WHEN @item=item THEN @gys+','+gys ELSE gys END,
    @item=item,
    gys=@gys
SELECT item,gys=MAX(gys) into #t4 FROM #t GROUP BY item order by item  
update buy set buy.gys=#t4.gys  from #t4 where #t4.item=buy.item
再写一个同样的语句做百分比的更新

12)sql 用语句创建外键同步改动关联表
ALTER TABLE [TB]  WITH CHECK ADD FOREIGN KEY([外键字段])
REFERENCES [外键表] ([键字段])
ON UPDATE CASCADE--级联更新
ON DELETE CASCADE--级联删除

13)sql保留两位小数
select cast(4393./100  as numeric(10,2))

14)sql 中case when的用法
select case when CHARINDEX(',',aa)>0 then SUBSTRING(aa,0,charindex(',',aa,0)) else aa end from [table]
如果分开则为
CASE A WHEN 0 THEN ...      
WHEN 1 THEN....      
ELSE ...END


15)sql 时间格式
SELECT CONVERT(datetime,'11/1/2003',101)
--结果:2003-11-01 00:00:00.000
SELECT CONVERT(datetime,'11/1/2003',103)
--结果:2003-01-11 00:00:00.000
可是对于非时间函数的字段值则:
DECLARE @dt datetime
SET @dt='2003-1-11'
--1. Style=101时,表示将日期转换为:mm/dd/yyyy 格式
SELECT CONVERT(varchar,@dt,101)
--结果:01/11/2003
--2. Style=103时,表示将日期转换为:dd/mm/yyyy 格式
SELECT CONVERT(varchar,@dt,103)
--结果:11/01/2003
即:Style=101时,表示将日期转换为:mm/dd/yyyy 格式   
Style=103时,表示将日期转换为:dd/mm/yyyy 格式"

16)sql函数建表
declare @table table(fid int,cost int,eid int)
insert into
table select 1,5088151,10284586     
union all    select 2,2088230,10217452     
union all    select 3,5088300,10242543     
union all    select 4,5088251,10217452

select * from @table a where fid=(select max(fid) from @table where a.eid=eid)

17)sql循环语句
declare @i int
set @i =0;
while @i <=10
begin    
print @i;    
set @i = @i+1
end

18)Delphi 循环取表中内容到下拉列表框中
procedure Tywybuyer.FormShow(Sender: TObject);
begin   
with aq1 do    
Connection:=dm.ADOCpc;     
aq1.SQL.Clear;   
aq1.SQL.Add('select distinct ywyxm from buy order by ywyxm' );   
aq1.Open;   
aq1.First;  
xm.Items.Clear;   
if not aq1.Eof then   
begin     
xm.Text:=trim(aq1.fieldbyname('ywyxm').AsString);   
end;    
while not aq1.Eof do   
begin      
xm.Items.Add(trim(aq1.fieldbyname('ywyxm').AsString));      
aq1.Next;   
end;   
xm.Text :='';
{  showmessage(''+fpcmain.vusername+'');  
xm.Text:=''+fpcmain.vusername+''; }
end;

19)Delphi1 公用函数
在一个public中写 
yhzsxm,vuserno,vusername,vpurview:string;
然后在另一个界面中uses这个页面
用时也在public里写入 
yhzsxm,vuserno,vusername,vpurview:string;后
showmessage(''+fpcmain.vusername+'')

20)sql与PL/SQL的四舍五入
向上取整sql server:select ceiling(4.2)     
        oracle:select ceil(4.2) from dual;
 向下取整 sql server:select floor(4.2)    
 oracle:select floor(4.2) from dual;
 oracle 四舍五入取大 select round(55.5) from dual;  56
 oracle 四舍五入取小 select trunc(55.5) from dual;  55

21)sql两个字段连接成一个
  select (a.item+a.zhouqi)   as   整个名字    from buy a

22)sql以26日作为月的开头累计其他数量
select [month]=datepart(mm,dateadd(mm,1,dateadd(dd,-25,date))),  
[Count]=sum(val)
from @t
group by datepart(mm,dateadd(mm,1,dateadd(dd,-25,date)))

23)sql插入触发器例子
create trigger Ta on a
for insert
as
if exists(select 1 from B,inserted d where B.q1=d.t1)
begin
update A
set A.q2=d.t2 from A,inserted d where a.q1=d.t1
end
if @@error<>0
begin
rollback
return
end
els
print '不更新'
return

24)asp右键失效
将<body>改为<body oncontextmenu="self.event.returnValue=false">

25)asp强制换行
<td style="word-break:break-all;"> 这个的。

26)pl/sql 一个物料多个供应商用逗号隔开语句
SELECT year1, wmsys.wm_concat(week) As gg     
FROM li_year      
GROUP By year1

27)sql在数据库中每五行加一个空列
select * from tb
select [ID],[P_TITLE],[P_COMPANY],[P_TIME]
from (
select rn=(select count(*) from tb where id<t.id)/5,*,px=0  from tb t
union all 
select distinct (select count(*) from tb where id<t.id)/5,null,null,null,null,1 
from tb t ) as t order by rn,px

28)把一连串的用逗号链接的字符串分成多列
declare @sql varchar(8000)
set @sql='a:a:3052169:76:102:张三:100:0:0:0'
set @sql='select '''+replace(@sql,':',''' union all select ''')+''''
exec(@sql)

29)sql查询时间大于5分钟的数据
select * from wxjl where datepart(minute,fwjssj)>5

30)从sql中直接查询excel文件
select * from    
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)
--2、从Excel文件中,导入数据到SQL数据库中,   
select * into 表 from
 OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)

31)sql把相乘得出的结果转换成字符型
declare @a money;
set @a=11;
select cast(Convert(real,@a*0.5) as varchar)

32)asp文本框只允许输入数字不允许数据汉字
<input name="yjcgsl" type="text" id="yjcgsl" size="10" onkeyup="value=this.value.replace(//D+/g,'')"

33)asp解除缓冲超时
"<%
response.buffer=true
response.expires=-1"

34)asp从数据取得下拉列表的值
" <SELECT name="cglx" id="cglx">
<%
dim rArr(2),ii
rArr(0)="一般采购"
rArr(1)="政府采购"
for ii=0 to 1 
if objRs

("cglx")=rArr(ii) then 
Response.Write "<OPTION value='"&rArr(ii)&"' selected>"&rArr(ii)&"</OPTION>"
else 

Response.Write "<OPTION value='"&rArr(ii)&"'>"&rArr(ii)&"</OPTION>" 
end if
next
%></SELECT>

35)asp从数据取得下拉列表的值(简单)
<select name="ztmyd" id="ztmyd">   
<option value=""<%if objRs("ztmyd")="" then response.Write" selected" end if%>></option>     
<option value="满意"<%if objRs("ztmyd")="满意" then response.Write" selected" end if%>>满意</option>    
<option value="一般"<%if objRs("ztmyd")="一般" then response.Write" selected" end if%>>一般</option>     
<option value="不满意"<%if objRs("ztmyd")="不满意" then response.Write" selected" end if%>>不满意</option>    

 <option value="不提供"<%if objRs("ztmyd")="不提供" then response.Write" selected" end if%>>不提供</option>         

</select>

36)sql跨数据库查询数据
select pno,pname from opendatasource('sqloledb','data source=192.168.0.7,1226;user id=sa;password=13930887007').HR.dbo.person

37)sql将用逗号隔开的字段分成若干行
create   table   #t1(name   varchar(800))    
insert   into   #t1   select   '1.nihao,2.nihaoma,3.wohenhao'  
set rowcount   8000   
select   identity(int,1,1)   as   id   into   #t2   from   sysobjects   a,sysobjects   b    
set   rowcount   0 
select * from #t1    
select left(stuff(','+a.name+',',1,b.id,''),charindex(',',stuff(','+a.name+',',1,b.id,''))-1)   as   name    
from #t1   a, #t2   b   
where  substring(','+a.name+'',b.id,1)   =   ',' and  b.id   <   len(a.name)+2

38)asp超时已过期
一种:你可以在IIS所在网站的属性里点击"主目录"然后"配置""选项"里ASP/cGI脚本超时大小设置高一些  
另一种方法更简单:直接在程序的头部加入     
Server.ScriptTimeOut   =   500
Set   command   =   server.CreateObject("ADODB.Command")
command.ActiveConnection   =   oConn
command.CommandTimeout   =   120   '修改此处的延时试试
command.CommandType   =   1
command.CommandText   =   "select   *   from   news"

39)sql备份数据日志表
select * from msdb.dbo.sysdbmaintplan_history

40)oracle月份对比法
Select EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd'))
from dual;

41)asp超时已过期
public conn
set conn=server.CreateObject("adodb.connection")
conn.CommandTimeout=999
conn.Open "Driver={SQL Server};Database=Tynew1;Server=(local);UID=sa;PWD=123456"

42)asp上传文件大小的系统设置
关闭IIS admin service服务,找到Windows/System32/Inesrv目录下的Metabase.xml并打开,
找到ASPMaxRequestEntityAllowed,将其修改

为需要的值。默认为204800,即200K,
把它修改为20480000(20M),然后重启IIS admin service服务。

43)asp系统设置缓冲
关闭IIS admin service服务,找到Windows/System32/Inesrv目录下的Metabase.xml并打开,
找到AspBufferingLimit,将其修改为需要的

值。默认为4M,把它修改为10240000(10M),
然后重启IIS admin service服务。

44)系统fso控制文件的删改功能
开启/关闭系统FSO方法:
在win2000系统里,可以按照以下方法:
在CMD命令行状态输入以下命令:
关闭命令:RegSvr32 /u C:/WINNT/SYSTEM32/scrrun.dll
打开命令:RegSvr32 C:/WINNT/SYSTEM32/scrrun.dll
在win2003系统里,则只需要在运行里输入:
打开命令:运行regsvr32 scrrun.dll
关闭命令:运行regsvr32 /u scrrun.dll

45)程序上传文件时无权限问题
Microsoft VBScript 运行时错误 错误 '800a0046' 没有权限
用户权限分配不正确导致的结果!
给c:/program files/common

files/system添加system权限
IIS网站目录添加IIS USER读权限
上传所有目录添加IIS USER的读写修权限
数据库目录写和修改权限
有全

权删除目录就要加上删除权限! "

46)asp查出数据后想保留两位小数
<%=FormatNumber(rs2("jine"),2)%>

47)asp链接返回上一步
Response.Write "该车辆信息已经存在!<a href='javascript:history.go(-1);'>返回</a>"

48)sql两个日期之间的间隔小于10
datediff(d,TAAS.regtime,getdate())<=10

49)pl/sql 把多个字段连接为一个
Select '"'||trim(a.t$item)|| '","'||trim(b.t$dsca)

||'",'||a.t$ecpr$1||',"ZX",'||a.t$emtc$1||',"","",'||c.t$bapr||',,,'
From baan.tticpr007120@baan26 a
Left Join

baan.ttcibd001120@baan26 b On a.t$item=b.t$item
Left Join baan.ttdpcg031120@baan26 c On a.t$item=c.t$item
Where c.t$prbk='SER000004'
Order By trim(a.t$item)

50)asp一个界面更新多个表语句
Dim sSQL,objCm
Set objCm = server.CreateObject("adodb.command")
objCm.ActiveConnection = conn  

objCm.CommandType = adCmdText
sSQL="update kfwbgb_clxx set isFinished=1 "
sSQL=sSQL+"  where BH='"&BH&"' and AutoAgentNo='"&AutoAgentNo&"'"
'response.write sSQL
'response.end   
objCm.CommandText = sSQL   
objCm.Execute

sSQL="Update dkhyhkfwgbg set clwc=1 "
sSQL=sSQL+" where  BH='"&BH&"' and AutoAgentNo='"&AutoAgentNo&"'" 

objCm.CommandText = sSQL  
objCm.Execute
Set objCm = Nothing
set conn=nothing
response.redirect "kfwgbg_list.asp"
response.end

51)asp取消语句
"<input type="button" name="nxt" value="取 消" onClick="javascript:if (confirm('是否放弃录入?'))
{document.location.href='RS7list.asp';} else {return}"> "

52)asp取得当前日期
<input name="fd5" type="text" class="doc_txt" id="fd5"  value=<%=date%>  size="15" readonly>
asp返回并重新加载界面
<a href="#" onClick="javascript:parent.topFrame.window.document.location.reload();document.location.href='kfwgbg_list.asp'">

确定</a>

53)asp如果是存储时的链接界面则用resquest
<% if request("wc")="完成" and request("xmxx")="成功信息" then %> 
<a href="kfwgbg_cltj.asp?BH=<%=request("BH")%>">完成请继续添加该编号对应的车辆信息</a>
<%else%>
<a href="#" onClick="javascript:parent.topFrame.window.document.location.reload();document.location.href='kfwgbg_list.asp'">确定</a>

<%end if%> 

54)asp没有form的时候提交数据并传值和取值
传值语句 <td width="13%" height="30"><input type="submit" name="Submit2" value="完成档案添加"
onClick="javascript:confirmwc('<%=BH%>');"></td>
函数语句
<SCRIPT LANGUAGE=javascript>
<!--
function confirmwc(BH)
{if

(confirm("是否确认完成全部客户档案的添加?"))
{document.location.href="kfwgbg_clfinished.asp?BH="+BH;return ; } 
return ;}
//-->
</SCRIPT>

55)IIS的停止与重启语句
重启IIS:net start w3svc
停止IIS:net stop iisadmin

56)asp显示出request后取出的值
Response.Write cstr(sbserviceno)

57)asp点击后直接显示提示框,点击后跳转到其他页面
<input type="button" name="nxt" value="取 消" onClick="javascript:if (confirm('是否放弃录入?'))
 {document.location.href='PDI_list.asp';} else {return}">

58)PL/SQL输出语句
dbms_output.put_line(str);

59)oracle  pl/sql解锁过程
解锁是首先根据这段代码找到session_id的值
SELECT O.OBJECT_NAME ,
                L.*
   FROM   ALL_OBJECTS O ,
               V$LOCKED_OBJECT L
   WHERE  O.OBJECT_ID = L.OBJECT_ID
把值写于sid后 
    SELECT TO_CHAR(SID) || ',' || TO_CHAR(SERIAL#)
       FROM   V$SESSION
       WHERE  SID = 144
把上段执行的结果拷贝到‘’内,杀掉锁住的进程
ALTER SYSTEM KILL SESSION '144,57719'

原创粉丝点击