Even if you don't like it (p.3), but you still want to transmit the request, you can create a CLR. :)
namespace CLR_Functions { public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction( IsDeterministic = true, IsPrecise = true, DataAccess = DataAccessKind.Read, SystemDataAccess = SystemDataAccessKind.Read)] // -- ALTER DATE: 29.09.2014 09:41 d-ivanov; 25.09.2014 16:22 d-ivanov; public static SqlString SFs_C_Name_ID_CD_Parameter_Values(SqlGuid F_Parameter_Values) { var result = ""; // ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠ°Π·Π΄Π΅Π»Π° ΠΈ Π΄ΠΎΠΏΠΏΠΎΠ»Ρ. using (var conn = new SqlConnection("context connection=true")) { conn.Open(); var cmd = new SqlCommand( @" SELECT @F_Division = cpv.F_Division, -- ΠΠΈΠ²ΠΈΠΆΠ½ Π·Π°ΠΏΠΈΡΠΈ. @F_Custom_Table_LINK = cpv.F_Custom_Table_LINK, -- Π§ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΊ. @F_Custom_Table_LINKG = cpv.F_Custom_Table_LINKG, -- ΠΡΠΈΠ΄ΠΎΠ²ΡΠΊΠΈΠΉ Π»ΠΈΠ½ΠΊ. @C_CCF_Display_Name = ccf.C_Display_Name, -- ΠΠΌΡ Π΄ΠΎΠΏΠΏΠΎΠ»Ρ. @C_CCF_System_Name = ccf.C_System_Name, -- ΠΠΌΡ Π΄ΠΎΠΏΠΏΠΎΠ»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅. @C_CFS_Name = ccfs.C_Name, -- ΠΠΌΡ ΡΠ°Π·Π΄Π΅Π»Π°. @C_Table_Name_Real = ccft.C_Table_Name_Real -- ΠΠΌΡ ΠΎΠ±Π΅ΠΊΡΠ°, ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. FROM dbo.CD_Parameter_Values cpv INNER JOIN dbo.CS_Custom_Fields ccf ON cpv.F_Custom_Field = ccf.LINK INNER JOIN dbo.CS_Custom_Field_Sections ccfs ON ccf.F_Custom_Field_Sections = ccfs.LINK INNER JOIN dbo.CS_Custom_Fileld_Tables ccft ON ccfs.F_Custom_Fileld_Tables = ccft.LINK WHERE cpv.LINK = @F_Parameter_Values ", conn); // ΠΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. cmd.Parameters.Add("@F_Parameter_Values", SqlDbType.UniqueIdentifier).Direction = ParameterDirection.Input; // ΠΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. cmd.Parameters.Add("@F_Division", SqlDbType.TinyInt).Direction = ParameterDirection.Output; cmd.Parameters.Add("@F_Custom_Table_LINK", SqlDbType.Int).Direction = ParameterDirection.Output; cmd.Parameters.Add("@F_Custom_Table_LINKG", SqlDbType.UniqueIdentifier).Direction = ParameterDirection.Output; cmd.Parameters.Add("@C_CCF_Display_Name", SqlDbType.NVarChar, 200).Direction = ParameterDirection.Output; cmd.Parameters.Add("@C_CCF_System_Name", SqlDbType.NVarChar, 200).Direction = ParameterDirection.Output; cmd.Parameters.Add("@C_CFS_Name", SqlDbType.NVarChar, 200).Direction = ParameterDirection.Output; cmd.Parameters.Add("@C_Table_Name_Real", SqlDbType.NVarChar, 100).Direction = ParameterDirection.Output; // ΠΡΡΠΈΠΌ Π»ΠΈΠ½ΠΊ Π΄ΠΎΠΏΠΏΠΎΠ»Ρ. Push me, and then just touch... (",) cmd.Parameters["@F_Parameter_Values"].Value = F_Parameter_Values; // ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ. cmd.ExecuteNonQuery(); } } } }
Then you can read from the query (well, up to the closing curly brackets, of course):
var C_CCF_Display_Name = cmd.Parameters["@C_CCF_Display_Name"].Value.ToString();
This is just an example of how to write. We pass our request to the function. :)
I apologize in advance that I did not write a separate abstract example, but simply threw my code. A lot of work. Glimpsed glimpse. All beaver. :)