工具/材料:Management Studio。?
1、首先在桌面上,点击“Management Studio”图标。?
2、再者在该界面中,点击左上角“新建查询”选项。?
3、继续在该界面中,输入循环增加新数据sql语句“declare @i int set @i=1 while @i<100 begin insert into test1(no,name)values(@i,'用户名') set @i=@i+1 end”。?
4、再者在该界面中,点击左上方“执行”按钮。?
5、最后在该界面中,显示循环增加新数据成功。
postgresql的pl/pgsql语言是支持动态sql语句的(说execute immediate的是ecpg所支持的)。但是,要记得重要的一点: 是在pl/pgsql语言中支持。而pl/pgsql语言一个块结构的语言,它以begin ... end为块的开始与结束标识。这也就是说,要执行动态sql语句,就必须放到begin ... end块中,而不要想实现一个单独的动态sql语句。在sql server中,倒是可以轻松的实现,我们可以直接执行一个这样的动态sql:
1execute sp_executesql n'select 1 as val'
而在postgresql中,就不要有此想法了。当然,sql server的这种动态sql语句的执行方法也有其局限与不便的地方。
在pl/pgsql中,执行动态sql的格式如下(摘录自说明文档):
1execute command-string [ into [strict] target ] [ using expression [, ... ] ];
其中,
command-string就是要执行的动态sql语句(一定要记住:这里是sql语句,不是pl/pgsql语句,像raise notice就不能使用);
into子句是把sql查询到的值赋给into指定的变量;
using子句是前面的command-string中替代变量($1, $2, ...)的赋值;
示例:
123456789do $$declarev_c1 integer;v_c2 integer;beginexecute 'select count(*) as c1, count(*) as c2 from (select 1 as idx union select 11 as idx union select 21 as idx) s where idx > $1' into v_c1, v_c2using 10;raise notice '%, %', v_c1, v_c2;
PostgreSQL中一般使用PL/PgSQL作为其编程语句,其语法与SQL Server / MySQL的有些不同。要实现这样的功能可以这样写(注意:分号不能少掉):
do?$$
declare
v_idx?integer?:=?1;
begin
??while?v_idx?<?30?loop
????insert?into?test?(userid)?values?(v_idx);??--?执行插入
??end?loop;
end?$$;
create or replace function aa1(a1 char(10),a2 bigint) returns
void AS $$
declare ii integer;
begin
II:=1;
FOR ii IN 1..a2 LOOP
insert into user1 values(ii,a1);
end loop;
end;
$$ LANGUAGE plpgsql;
select aa1('a123',10)
or
create or replace function aa2(a1 char(10),a2 bigint) returns SETOF user1 AS $$
declare ii integer;
begin
II:=1;
FOR ii IN 1..a2 LOOP
insert into user1 values(ii,a1);
end loop;
return query SELECT * FROM user1;
end;
$$ LANGUAGE plpgsql;
select * from aa2('a123',20)
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....