sql fetch提取数据常用方法

如题所述

1、查询数据库(test)中的所有表名的方法:

SELECT name
FROM [test]..sysobjects where xtype='U'
********
补充:
如果有的表不存在【时间】那就用下面的语句直接把含有【时间】列的表名找到:
SELECT d.name
FROM [test]..syscolumns a
inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='时间'
**********

2、遍历这个表名取出数据插入到另外的数据库中(SqlServer中的遍历方法我不是很清楚,给你提供个思路,oracle的话我就能把程序写出来了O(∩_∩)O~)。

如:遍历结果存储到数据库test2中
insert into [test2]..遍历出的表名 select * from 遍历出的表名 where datediff(day,'2009-08-07',时间)>0;

重复上面的sql语句指导讲数据库test中的表名完全遍历完为止。

*************************************************************
补充:我试验了一下下面把实验代码给你(建一个存储过程)
create proc test as
--定义游标变量
declare cur1 cursor for
SELECT d.name
FROM [test]..syscolumns a
inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='时间'
--定义临时变量
declare @tmp varchar(1000)
--定义sql字符串
declare @strsql varchar(4000)
--打开游标
open cur1
--读取第一条数据,也就是第一个表名
fetch next from cur1 into @tmp
--是读完
while(@@fetch_status = 0)
begin
--连接sql文
set @strsql='insert into [test2]..'+@tmp++' select * from '+@tmp+' where datediff(day,'+char(39)+'2009-08-07'+char(39)+',时间)>0'
--执行这个sql
exec(@strsql)
--读取下一条数据
fetch next from cur1 into @tmp
end
--关闭游标
close cur1
--摧毁游标所占资源
deallocate cur1
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-11-08
HSTMT stmt;
char * sqlquery="select branch_name,sum(balance) from account group by branch_name";
SQLAllocStmt(conn,&stmt);
error=SQLExecDirect(stmt,(SQLCHAR*)sqlquery,SQL_NTS);
if (error==SQL_SUCCESS)
{
SQLBindCol(stmt,1,SQL_C_CHAR,branchname,80,&lenOut1);

SQLBindCol(stmt,2,SQL_C_FLOAT,&balance,0,&lenOut2);
error=SQLFetch(stmt);
SQLGetDiagRec(SQL_HANDLE_STMT,stmt,RecNumber,SQLState, NativeErrorPtr,MessageText, BufferLength,TextLengthPtr);
cout<<SQLState<<":"<<MessageText<<endl;
while (SQLFetch(stmt)==SQL_SUCCESS){
printf("%s%g\n",branchname,balance);
}
}

sql fetch提取数据常用方法
1、查询数据库(test)中的所有表名的方法:SELECT name FROM [test]..sysobjects where xtype='U'补充:如果有的表不存在【时间】那就用下面的语句直接把含有【时间】列的表名找到:SELECT d.name FROM [test]..syscolumns a inner join [test]..sysobjects d on a.id=d.id and d.xtype='...

SQL FETCH
ABSOLUTE和RELATIVE选项需要一个整数参数,而FETCH NEXT在第一次提取时默认从头开始,FETCH PRIOR则从尾部开始。FETCH命令还支持全局和局部游标的操作,以及INTO语句将结果存储到变量中。此外,FETCH命令的状态可以通过@@FETCH_STATUS函数或游标描述信息进行检查,以确保数据的正确性。权限方面,FETCH是默认授予所...

SQL如何把表中一个范围的数据提取处理
insert into aaa values (1,3);insert into aaa values (6,9);--竖版 create function dbo.func_d (@a int)RETURNS @table table(id int) as begin declare @num1 int,@num2 int;declare mycursor cursor for select * from aaa;open mycursor fetch mycursor into @num1,@num2;whil...

@@fetch_status概述
首先,当FETCH语句执行成功时,@fetch_status的值会变为0,表示查询已成功获取到数据。其次,如果FETCH语句遇到失败或者查询结果集中不存在当前行,@fetch_status的值会变为-1,表明查询出现了问题。再者,如果试图提取的行在结果集中不存在,@fetch_status的值会显示为-2,这通常意味着查询结果不符合预期...

Python如何使用fetchone()和fetchall()方法从MySQL数据库查询数据...
在Python中,连接MySQL数据库并执行查询操作是常见的任务。有两种方法可以获取数据:fetchone()和fetchall()。fetchone()用于获取单条查询结果,而fetchall()则用于获取所有结果。rowcount属性是一个只读属性,它返回执行SQL语句后影响的行数,这对于追踪操作影响范围很有用。让我们通过一个实例来理解这些...

...SQL游标,为什么要在BEGIN和END里面再写一遍fetch next from mycursor...
fetch into 是移动游标提取数据。(1)句就是把第一行两列数据放到@O_ID,@A_Salary中,游标提留在第一行 while(@@fetch_status = 0){ --正常来说你要在这里循环提取每行数据,不然不会用到游标这个概念。Begin end是什么?Begin就是“{”,END就是“}”说到这了 你说为什么要写在{}里?如果...

Oracle数据库中,使用fetch语句提取游标数据,fetch语句怎么理解呀...
显式游标需要在PL\/SQL块的声明部分声明,在执行部分或异常处理部分打开,取完数据后将其关闭 declare v_name t_student.sname%type;Cursor cur_stu Is select sname from t_student;begin Open cur_stu;Loop Fetch cur_stu Into v_name;Exit When cur_stu%NotFound;dbms_output.put_line('...

SQL提取字段值
在userid中查找“帮助”。删除“帮助”及帮助以后的字符。插入到table2中。具体实现:--编写一个游标,从table1大量数据中一条条取出issid等于1的数据 declare @local_variant char(200)declare cursor_name cursor for select userid from table1 where issid='1'open cursor_name fetch next from ...

sql 存储过程里面如何 对数据集循环
A. 在简单的游标中使用 FETCH 以下示例为 Person.Contact 表中姓氏以字母 B 开头的行声明了一个简单的游标,并使用 FETCH NEXT 逐个提取这些行。FETCH 语句以单行结果集形式返回在 DECLARE CURSOR 中指定的列的值。USE AdventureWorksGODECLARE contact_cursor CURSOR FORSELECT LastName FROM Person....

SQL游标如何使用
下例为 authors 表中姓以字母 B 开头的行声明了一个简单的游标,并使用 FETCH NEXT 逐个提取这些行。FETCH 语句以单行结果集形式返回由 DECLARE CURSOR 指定的列的值。USE pubs GO DECLARE authors_cursor CURSOR FOR SELECT au_lname FROM authors WHERE au_lname LIKE "B%"ORDER BY au_lname ...

相似回答