您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

从 C# 调用 SQLScript

给定过程:

CREATE PROCEDURE TEST_PRO1(IN strin NVARCHAR(100), OUT SorP NVARCHAR(100)) 

language sqlscript AS

BEGIN

select 10 from dummy;

SorP = N'input str is ' || strin;

END;

可按如下方式调用此过程:

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.Common;

using ADODB;

using System.Data.SqlClient;

namespace NetODBC

{

class Program

{

static void Main(string[] args)

{

try

{

DbConnection conn;

DbProviderFactory _DbProviderFactoryObject;

String connStr = "DRIVER={HDBODBC32};UID=SYSTEM;PWD=;

SERVERNODE=:;DATABASE=SYSTEM";

String ProviderName = "System.Data.Odbc";

_DbProviderFactoryObject = DbProviderFactories.GetFactory(ProviderName);

conn = _DbProviderFactoryObject.CreateConnection();

conn.ConnectionString = connStr;

conn.Open();

System.Console.WriteLine("Connect to HANA database successfully");

DbCommand cmd = conn.CreateCommand();

//call Stored Procedure

cmd = conn.CreateCommand();

cmd.CommandText = "call test_pro1(?,?)";

DbParameter inParam = cmd.CreateParameter();

inParam.Direction = ParameterDirection.Input;

inParam.Value = "asc";

cmd.Parameters.Add(inParam);

DbParameter outParam = cmd.CreateParameter();

outParam.Direction = ParameterDirection.Output;

outParam.ParameterName = "a";

outParam.DbType = DbType.Integer;

cmd.Parameters.Add(outParam);

reader = cmd.ExecuteReader();

System.Console.WriteLine("Out put parameters = " + outParam.Value);

reader.Read();

String row1 = reader.GetString(0);

System.Console.WriteLine("row1=" + row1);

}

catch(Exception e)

{

System.Console.WriteLine("Operation failed");

System.Console.WriteLine(e.Message);

}

}

}

}