17,091
社区成员
发帖
与我相关
我的任务
分享
CREATE OR REPLACE PROCEDURE GrantPrivilegeToYsas(
i_st in varchar2,--format:IBCS_TL
i_flag out number--0:true 1:false
) authid current_user
is--Author:wangqingkun
/*
Description:Grant Privilege to YSAS
Create date:2010-09-02
*/
--define dynamic Cursor to loop History Table
TYPE t_Cur is ref Cursor;
v_Cursor t_Cur;
--temp variable
v_tmpsql varchar2(4000);
v_NowZWNY varchar2(10);
v_TableCount number;
v_TableName varchar2(128);
BEGIN
v_tmpsql:='
select max(i_zhangwuny)
from '||i_st||'.sys_jiezhuanrz';
execute immediate v_tmpsql into v_NowZWNY;
v_NowZWNY:=v_NowZWNY-1;
--Search
v_tmpsql:='
SELECT nvl(count(TABLE_NAME),0)
FROM ALL_TABLES
WHERE TABLE_NAME LIKE ''%'||v_NowZWNY||'''';
execute immediate v_tmpsql into v_TableCount;
if v_TableCount>0 then
begin
v_tmpsql:='
SELECT TABLE_NAME
FROM ALL_TABLES
WHERE TABLE_NAME LIKE ''%'||v_NowZWNY||'''';
dbms_output.put_line(v_tmpsql);
--Open Cursor
open v_Cursor for v_tmpsql;
loop--Loop
fetch v_Cursor into v_TableName;
--Exit
exit when v_Cursor%NOTFOUND;
v_TableName:=i_st||'.'||v_TableName;
--Grant Privilege to YSAS
v_tmpsql:='
grant select on '||v_TableName||' to ysas';
dbms_output.put_line(v_tmpsql);
execute immediate v_tmpsql;
--Success
i_flag:=0;
end loop;
close v_Cursor;--Close Cursor
--error occurr
EXCEPTION
when others then
rollback;
i_flag:=1;
return;
end;
end if;
END GrantPrivilegeToYsas;
/*
* int[] a={3,3,9,1}
* 表示的长整数是:193
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace SquareCalc
{
class Program
{
static void Main(string[] args)
{
//产生随机数
Random rn = new Random();
int len = rn.Next(1, 10);
//定义数组a
int[] a = new int[len + 1];
GenerateArray(len, a, rn);
//DisplayArray(a);//输出数组
//定义数组b
int[] b = new int[len + 2];
GenerateArray(len+1, b, rn);
//DisplayArray(b);//输出数组
Console.WriteLine(CalcLongOperation(a,b,0));
Console.ReadKey();
}
static void DisplayArray(params int[] arr)
{
string str = string.Empty;
foreach (int item in arr)
{
str +=item;
Console.WriteLine(item);
}
Console.WriteLine(str);
}
static void GenerateArray(int len, int[] arr,Random rn)
{
arr[0] = len;
for (int i = 1; i < len + 1; i++)
{
arr[i] = rn.Next(1, 10);
}
}
/// <summary>
/// 计算两个数的和或差
/// </summary>
/// <param name="a">长整数1</param>
/// <param name="b">长整数2</param>
/// <param name="type">0:add,1:sub</param>
/// <returns></returns>
static double CalcLongOperation(int[] a,int[] b,int type)
{
int k,k2;
double result, result2;
result = 0d;
result2 = 0d;
k = a.Length == 2 ? 1 : a.Length - 1;
k2 = b.Length == 2 ? 1 : b.Length - 1;
#region
//for (int i = k,j=k-1; i >0; i--,j--)
//{
// result += a[i] * Math.Pow(10, j-1);
//}
//result = double.Parse(result.ToString().Split('.')[0] + result.ToString().Split('.')[1]);
#endregion
result=OutputArray(a, k);
result2 = OutputArray(b, k2);
if (type == 0)
{
return result + result2;
}
else
{
return result - result2;
}
}
static double OutputArray(int[] arr, int k)
{
double result = 0d;
for (int i = k, j = k - 1; i > 0; i--, j--)
{
result += arr[i] * Math.Pow(10, j - 1);
}
result = double.Parse(result.ToString().Split('.')[0] + result.ToString().Split('.')[1]);
return result;
}
}
}